プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。
複数の列で重複した列がある場合の行削除のクエリが思い付きません。

A表 A    B   C   D
  ==== === === ====
1 ああああ 100 200 ABCD
2 いいいい 200  90 ASKB
3 うううう 300 800 ALTE
4 ええええ 400 200 ABCD

B表
  ==== === === ====
1 ああああ 100 200 ABCD
2 ああああ 400 100 ABCD

このとき、A表とB表を比較し、B,C,D列で重複したデータをB表から削除した行を表示したいのです。

ほしいデータは

B表
  ==== === === ====
2 ああああ 400 100 ABCD

です。よろしくお願いします。

A 回答 (2件)

別解をひとつ提示。

(ANo.1でもいけると思います)

select B表.*
from B表
where not exists (
select A表.*
from A表
where A表.B = B表.B and A表.C = B表.C and A表.D = B表.D
);
    • good
    • 0
この回答へのお礼

今回はjjon-com様の方法で解決してみようと思います。
助かりました。他にも方法がないか勉強してみます。
ありがとうございました。

お礼日時:2008/06/16 23:58

重複したデータを削除ではなく


重複していないデータを抽出と考えます

SELECT テーブルB.*
FROM テーブルB
WHERE (((テーブルB.B) Not In (select B from テーブルA where テーブルA.C=テーブルB.C and テーブルA.D=テーブルB.D)));
    • good
    • 0
この回答へのお礼

逆の発想が必要だったんですね。
もっといろいろ試してみようと思います。
大変参考になりました。ありがとうございました。

お礼日時:2008/06/17 00:00

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