こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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  !!!!!!

分かりづらい説明かと思いますが、よろしくお願いします。
不明点があれば、補足にて追加していきます。

投稿日時 - 2004-11-12 12:42:46

QNo.1081184

困ってます

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

こういうSQL文でどうでしょうか?
動作確認なしなので、間違いがあったら再度考えます・・。
また、質問の意味を勘違いしているようでしたら、指摘してください。


DELETE FROM テーブルB
WHERE NO IN ( SELECT NO FROM テーブルA
       WHERE CODE = 'A20')

意味的には、
テーブルAからCODEがA20のもののNOを取得して、テーブルBのNOが、そのNOのいずれかに該当したらDELETEするという処理になると思います。(多分)

投稿日時 - 2004-11-12 13:05:12

補足

希望の通り結果ができました!

WHERE句のあとに ~ IN というのもありましたね^^;
SQLは奥が深い…
ありがとうございました。

投稿日時 - 2004-11-12 13:30:53

お礼

早速の回答、ありがとうございます。
そうです。SELECT文で表示するなら…

SELECT B.* FROM テーブルA A,
テーブルB B
WHERE A.CODE = 'A20'
AND A.NO = B.NO
としました。

こちらで実際にやってみます。

投稿日時 - 2004-11-12 13:20:08

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

こんにちは。

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

投稿日時 - 2004-11-12 13:18:21

お礼

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

投稿日時 - 2004-11-12 13:38:25

あなたにオススメの質問