電子書籍の厳選無料作品が豊富!

SQLのUPDATE文(WHERE)で教えて下さい
SQL初心者なのですが、どなたか教えて頂けないでしょうか・・・。
Oracle10gにSqlPlusで接続してテーブルをUPDATEしようとしています。

【テーブル1】
品番、 規格、 取引先、 日付
A1   XXX  T001   2010/01/01
A1   YYY  T002   (空白)
B1   XXX  T001   (空白)
C1   ZZZ  T003   (空白)

【テーブル2】
品番、 規格、 取引先、 備考
A1   XXX  T001   あああ
A1   YYY  T002   いいい
B1   XXX  T001   ううう

テーブル1の「日付」が(空白)のレコードを対象に、
テーブル1の「品番+規格+取引先」とテーブル2の「品番+規格+取引先」が同じな場合、
テーブル1の「日付」項目に今日の日付をUPDATEしたいと考えています。
結果を以下のようにしたいです。

【テーブル1】
品番、 規格、 取引先、 日付
A1   XXX  T001   2010/01/01
A1   YYY  T002   2010/03/19
B1   XXX  T001   2010/03/19
C1   ZZZ  T003   (空白)

これが実現できるSQL文を教えて下さい。
宜しくお願い致します。

A 回答 (1件)

update テーブル1 set 日付=sysdate


where
日付 is null and
(品番,規格,取引先) in (select 品番,規格,取引先 from テーブル2)
;
な感じかなぁ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
少しだけ変更して出来るようになりました。
抽出条件の項目に「concat」を入れないとレコード選択されず更新されませんでした。

update テーブル1 set 日付 = TO_CHAR( sysdate , 'YYYYMMDD')
where 日付 Is Null and
(concat(concat(品番, 規格), 取引先)) in (select (concat(concat(品番, 規格), 取引先)) from テーブル2) ;

これからも勉強続けていきますので、またご教授宜しくお願いします。

本当にありがとうございました。

お礼日時:2010/03/20 11:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!