アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になってます。
タイトルの通りなのですが、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  !!!!!!

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

A 回答 (2件)

こういうSQL文でどうでしょうか?


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


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

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

この回答への補足

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

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

補足日時:2004/11/12 13:30
    • good
    • 0
この回答へのお礼

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

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

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

お礼日時:2004/11/12 13:20

こんにちは。



No.1さんの回答でバッチリです・・・。
(^^ゞ
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/11/12 13:38

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

関連するカテゴリからQ&Aを探す