- ベストアンサー
SQLのDELETEについての条件
いつもお世話になってます。 タイトルの通りなのですが、SQLを触れたばかりなので、DELETE文の条件をどう書くか悩んでいます。 以下のテーブルAとテーブルBがあるとします。 テーブルA NO CODE GROUP ---+------+------- 001 A20 AAAA 002 B10 AABB 003 B20 BBBB 004 A20 AABB 005 A10 BBBB 006 B10 AAAA テーブルB NO ID COMMENT ---+------+-------- 001 100 ****** 002 100 ****** 003 120 ++++++ 004 140 <<<<<< 005 170 \\\\\\ 006 110 %%%%%% 007 120 !!!!!! DELETEの条件として行いたいのは テーブルAのCODEが'A20'で、 テーブルAのその条件のNOとテーブルBのNOが同じものの時、条件に合ったテーブルBのレコードを削除したいものです。 例のテーブルでいえば、テーブルAはそのままで、テーブルBが次のようになるようにしたいです。 テーブルB NO ID COMMENT ---+------+-------- 002 100 ****** 003 120 ++++++ 005 170 \\\\\\ 006 110 %%%%%% 007 120 !!!!!! 分かりづらい説明かと思いますが、よろしくお願いします。 不明点があれば、補足にて追加していきます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こういうSQL文でどうでしょうか? 動作確認なしなので、間違いがあったら再度考えます・・。 また、質問の意味を勘違いしているようでしたら、指摘してください。 DELETE FROM テーブルB WHERE NO IN ( SELECT NO FROM テーブルA WHERE CODE = 'A20') 意味的には、 テーブルAからCODEがA20のもののNOを取得して、テーブルBのNOが、そのNOのいずれかに該当したらDELETEするという処理になると思います。(多分)
その他の回答 (1)
- taka451213
- ベストアンサー率47% (436/922)
こんにちは。 No.1さんの回答でバッチリです・・・。 (^^ゞ
お礼
そうでした。わざわざありがとうございます。
お礼
早速の回答、ありがとうございます。 そうです。SELECT文で表示するなら… SELECT B.* FROM テーブルA A, テーブルB B WHERE A.CODE = 'A20' AND A.NO = B.NO としました。 こちらで実際にやってみます。
補足
希望の通り結果ができました! WHERE句のあとに ~ IN というのもありましたね^^; SQLは奥が深い… ありがとうございました。