• ベストアンサー

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  !!!!!! 分かりづらい説明かと思いますが、よろしくお願いします。 不明点があれば、補足にて追加していきます。

質問者が選んだベストアンサー

  • ベストアンサー
  • cucsna
  • ベストアンサー率23% (12/51)
回答No.1

こういうSQL文でどうでしょうか? 動作確認なしなので、間違いがあったら再度考えます・・。 また、質問の意味を勘違いしているようでしたら、指摘してください。 DELETE FROM テーブルB WHERE NO IN ( SELECT NO FROM テーブルA        WHERE CODE = 'A20') 意味的には、 テーブルAからCODEがA20のもののNOを取得して、テーブルBのNOが、そのNOのいずれかに該当したらDELETEするという処理になると思います。(多分)

CupNaka
質問者

お礼

早速の回答、ありがとうございます。 そうです。SELECT文で表示するなら… SELECT B.* FROM テーブルA A, テーブルB B WHERE A.CODE = 'A20' AND A.NO = B.NO としました。 こちらで実際にやってみます。

CupNaka
質問者

補足

希望の通り結果ができました! WHERE句のあとに ~ IN というのもありましたね^^; SQLは奥が深い… ありがとうございました。

その他の回答 (1)

回答No.2

こんにちは。 No.1さんの回答でバッチリです・・・。 (^^ゞ

CupNaka
質問者

お礼

そうでした。わざわざありがとうございます。

関連するQ&A