SQL削除条件について

解決済みの質問

SQL削除条件について

初歩的な質問で大変恐縮ですが、ご教授願います。
以下の二つのテーブルがある場合、1回のSQLで削除する方法を教えてください。

<Aテーブル>
---------------
ID 削除フラグ
A 0
B 1
C 0
D 1
E 0
E 0
E 0
F 1
F 0
F 1
G 1
G 1
G 1

<Bテーブル>
ID
-----
A
B
E
F
G

<削除後のAテーブル>
---------------
ID 削除フラグ
A 0
C 0
D 1
E 0
E 0
E 0
F 1
F 0
F 1
※Aは削除フラグが0のため削除されない。
※C,DはIDが一致しないため削除されない。
※E,Fは削除フラグが全て1でないため削除されない。

IDが一致していて、削除フラグが全て「1」である場合、Aテーブルを削除する。
としたいのですが、半日悩んでもうまくいきません。
どうかお願い致します。

投稿日時 - 2012-02-19 22:55:50

連想キーワード:

QNo.7315575

すぐに回答ほしいです

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

select a.id
from a natural join b
where flag = 1
and a.id not in (select id from a where flag <> 1);

で,削除対象のIDであるBとGが抽出されるので,これを,

delete from a
where a.id in (……);

に組み込めば良いのではないでしょうか。

私の手元にあるDBソフトは同一テーブルを2重にネストしてdelete対象にできないので,別途viewを作る必要がありそうなのですが。

投稿日時 - 2012-02-20 11:10:54

お礼

返答が遅れて申し訳ありません。
現在手元に実機がありませんので、明日試させて頂きます。
大変勉強になりました。ありがとうございます。

投稿日時 - 2012-02-20 23:18:21

ANo.2

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

[  前へ  |  次へ ]

ベストアンサー以外の回答(1件中 1~1件目)

ANo.1

環境がないので試していませんが以下のSQLで如何でしょう
DELETE FROM A INNER JOIN B ON A.ID=B.ID
WHERE A.削除フラグ=1

投稿日時 - 2012-02-20 09:13:28

お礼

ご回答ありがとうございます。
現在手元に実機がありませんので、明日試させて頂きます。
まだまだ勉強不足ですね。精進します。

投稿日時 - 2012-02-20 23:21:46

あわせてチェックしたい
  • SQL テーブル結合 ...
  • AccessのSQL 部分一致したデータの更新 ...
  • 2つのテーブルで一致しているものを抽出する。SQL文で作成。 ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら