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

次のような操作がしたいのですが・・・
Test1
t1 t2
1 A
2 B
3 C --ココ
Test2
tt1 tt2 tt3
1 1 AA
1 2 BB
2 1 CC
4 1 DD --ココ

結果
ココの部分を削除したい。
Test1とTest2を関係付けられなかった部分(Test.t1=Test2.tt1のinnerjoinの逆)を削除したいのです。

アドバイスあれば、宜しくお願いします。

A 回答 (2件)

1クエリで2つのテーブルを更新することはSQL Serverではできません。


DELETE FROM Test1 WHERE t1 NOT IN (SELECT tt1 FROM Test2)
DELETE FROM Test2 WHERE tt1 NOT IN (SELECT t1 FROM Test1)

この回答への補足

ありがとうございます。
ついでになんですが、
キーが二つある場合はどうなるのですか?

Test1
t1 t2 T3
1 1 A
2 1 B
3 2 C
5 1 d --ココ

Test2
tt1 tt2 tt3
1 1 AA
1 2 BB --ココ
2 1 CC
4 1 DD --ココ

結果
ココの部分を削除したい。
Test1とTest2を関係付けられなかった部分(Test.t1=Test2.tt1 AND Test.t2=Test2.tt2のinnerjoinの逆)を削除したいのです。

アドバイスあれば、宜しくお願いします。

補足日時:2009/10/30 15:50
    • good
    • 0

#1です。


キーが2つ以上あるならば、EXISTS句を使ってください。

DELETE a FROM Test1 a
WHERE NOT EXISTS (SELECT NULL FROM Test2 WHERE tt1=a.t1 AND tt2=a.t2)

DELETE a FROM Test2 a
WHERE NOT EXISTS (SELECT NULL FROM Test1 WHERE t1=a.tt1 AND t2=a.tt2)
    • good
    • 0

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