- ベストアンサー
インサート文での条件の指定について
- SQL初心者の方がストアド内のインサート文で条件を指定する方法について質問されています。具体的には、売上台帳テーブルにT受信データの受注Noがない行のみをインサートさせたいという要件があるようです。
- 質問者は、条件をどのように書けば良いかわからず困っているようです。ご親切な方からのアドバイスを求めています。
- 質問文章はインサート文の例も示されており、条件の指定に関する具体的なサンプルが求められています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
insert into 売上台帳 (支店コード,受注No,伝票No,品番,品名,数量,オーダー宛先,売上日, 住所,電話番号,更新日時,更新者) select支店コード,受注No,伝票No,品番,品名,数量,オーダー宛先,売上日, 住所,電話番号,更新日時,更新者 from T受信データ where 支店コード = 002 and not exists ( select 1 from 売上台帳 U where T受信データ.受注No=U.受注No) って書けませんでしたっけ。
その他の回答 (3)
- SaKaKashi
- ベストアンサー率24% (755/3136)
MERGE文を使って、NOT MATCHでINSERTして、MATCHで何もしない。
- root139
- ベストアンサー率60% (488/809)
「売上台帳テーブルにT受信データの受注Noがない行」という条件は EXIST 句を使っても表現できますね。 例) ------------------------------------- -- from 句より前は元と同じ from T受信データ A where 支店コード = 002 AND NOT EXISTS(SELECT * FROM 売上台帳 B WHERE A.受注No = B.受注No); -----------------------------------------
- nda23
- ベストアンサー率54% (777/1415)
>from T受信データ >where 支店コード = 002 from T受信データ A left outer join 売上台帳 B on A.受注No=B.受注No where A.支店コード='002' AND B.受注No IS NULL 支店コードは文字列ではないですか? 文字列なら引用符(アポストロフィ)で囲む必要が あります。また、受注NoがNullのデータは無いと 仮定しています。正確を期するなら、下記のように 主キー項目を使います。 B.主キー IS NULL
お礼
大変参考になりました。 有難うございました。