ふじまるシステム

WEB制作のフリーランスで頑張っていこうとしている者のブログです。趣味や役立つ知識などあれば発信していきます。ポートフォリオは自己紹介ページからご覧ください。

プログラム

SQL Select結果からUpdateする方法

投稿日:2019年12月18日 更新日:

こんちには、ふじまるです!

この前久々に仕事でSQLでテーブル更新しようとしたらちょっと困ったのでメモしておきます。

Selectした結果を使って別テーブルをアップデートするときは以下のようなSQLを書きます。

update 
  [更新先テーブル名]
set
  [更新先テーブル名].[更新先テーブルの項目]= [更新元テーブル名].[更新元テーブルの項目]
from
  [更新元テーブル名]
where
  [更新先テーブル名].[更新先テーブルの項目] = [更新元テーブル名].[更新元テーブルの項目] 

具体的な例で説明すると、以下のように書きます。
例:「商品マスター」テーブルの「価格」を「プライス」テーブルの「価格」へ更新する。

商品マスターテーブル

商品コード価格
A1000
B2000
C5000

プライステーブル(ここの価格を商品マスターと同じにしたい)

商品コード価格
A500
B1000
C4500
update 
  プライス
set
  プライス.価格 = 商品マスター.価格
from
  商品マスター
where
  プライス.商品コード = 商品マスター.商品コード

以上のSQLを実行するとプライステーブルが以下のように商品マスターと同じ価格になります。

プライステーブル(更新後)

商品コード価格
A1000
B2000
C5000

という簡単な感じです。

この前困ったのは商品マスターだけ 「as A」でAというテーブル名にして実行したら、「項目があいまい」のエラーが出てしまって、それじゃあプライステーブルにも「as B」でBというテーブル名にしたけど同じエラーだったんです。

テーブル名先頭につけるの面倒なので短い別名をつけて指定したんですが、それではダメでした。(SQLserver)

最終的に正規のテーブル名をつける事で処理はできました。

--ダメな例①
update 
  プライス
set
  価格= A.価格
from
  商品マスター as A
where
  商品コード = A.商品コード

--ダメな例②
update 
  プライス as B
set
  B.価格= A.価格
from
  商品マスター as A
where
  B.商品コード = A.商品コード

はい、ということで仕事の備忘録でした。

それでは!

-プログラム

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【テレワークで困ったこと】 ウィンドウが画面の外に!【解決】

こんにちは、ふじまるです! 新型コロナウイルスの影響で自宅のノートPCからテレワークをしているのですが、始めた当初はソフトやフォルダなどのウィンドウが画面の外に出て見れない!という困ったことになりまし …

no image

テラデータ SQL 備忘録

こんにちは、ふじまるです!データベースにもいろいろありますが、仕事でテラデータのデータベースを触る機会があったのでSQLの備忘録を書いておきますね。 目次 件数確認テーブルのコピーテーブル名の変更Se …

vbscript 経過時間(分)を求める方法

こんにちは、ふじまるです。 久々に自分の作ったプログラムを見直すことがあって、その中で経過分数を求めるプログラムがあったので書いておきます。 例えば11時から12時15分は何分あるかです。答えは75分 …

no image

【HTML】新規ウィンドウでリンクを開く方法

こんにちは、ふじまるです。 今回はHTMLのお話。リンクをクリックした時に、開く種類がありますよね。 簡単な設定なので覚えておいて損はありません。 ※下記サンプルリンクはこのブログのトップページにいき …

【エクセル】抽選作業はこれで一発!ランダム抽選システム

こんにちは、ふじまるです! ランダムで抽選したいけどくじ引きとかするの面倒!とか、数百人もいるのに抽選が大変!ということありませんか? 今日はそんな時にエクセルがあれば一発で抽選できる仕組みを紹介しま …