FC2ブログ

UPDATE文の妙技

先日、ORACLEのあるテーブルの更新をすることになって、何とかPL/SQLで組まずに
SQL一発で更新できないものか考えていました。

どんな内容かと言うと、

テーブル1

AB
111あああ
222いいい
333ううう

テーブル2

AB
111かかか
222ききき
444くくく

という2つのテーブルがあって(どちらもA列に主キーがはっています)、
テーブル1、2のA列が共通のデータについてテーブル1のB列のデータを
更新するという内容です。

つまり、結果として、テーブル1が

AB
111かかか
222ききき
333ううう

となればOK(333は更新されない)。



家のパソコンにはORACLEが入ってないのでちょっと試してないのですが、
以下のようなUPDATE文でうまくいきました。

UPDATE テーブル1 T1 SET
B = (
SELECT B FROM テーブル2 T2
WHERE T1.A=T2.A
)
WHERE EXISTS (
SELECT * FROM テーブル2 T2
WHERE T1.A=T2.A
)

こうやって狙ったデータだけ一括更新できると便利ですね。
SQLは覚えれば覚えるほど色々なことができると改めて感じました。
スポンサーサイト



テーマ : データベース
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

やまやま

Author:やまやま
40代の♂です。

IT業界で仕事してます。

趣味はマンガと英語学習。
あと科学、環境問題を扱った
雑誌を読むこと。

FC2カウンター
リンク
最近の記事
カテゴリー
最近のコメント
ブログランキング
ブロとも申請フォーム

この人とブロともになる

最近のトラックバック
ブログ内検索
月別アーカイブ
RSSフィード