ふじまるシステム

何か出来ることはないかとブログを始めた社会人です。アドセンスで収入を得られるか奮闘中。まだ当分無理そうですが、頑張って続けて行こうと思います!

プログラム

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

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

関連記事

no image

【SQL】UNION ALLの活用方法

販売データの実績を取るときのSQLで異なる期間のデータを比較したい時がありますよね。例えば本年の実績と前年の実績を取って前年比を出したいなど。 2回クエリを実行して画面上で計算させるのもいいですが、一 …

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

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

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

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

no image

テラデータ SQL 備忘録

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

no image

Google chrome、Microsoft edgeがエラーで起動できない。STATUS_INVALID_IMAGE_HASH

こんにちは、ふじまるです! 会社のPCでいきなりGoogle chromeとMicrosoft edgeのブラウザが両方エラーで起動できなくなりました。。。 エラーメッセージは「STATUS_INVA …

  • 56839総閲覧数:
  • 13今日の閲覧数:
  • 406昨日の閲覧数:
  • 37762総訪問者数:
  • 9今日の訪問者数:
  • 239昨日の訪問者数:
  • 0現在オンライン中の人数:
  • 2019年8月19日カウント開始日:
  • 60現在の記事: