- ベストアンサー
DELETEについて(結合による)
次のような操作がしたいのですが・・・ 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の逆)を削除したいのです。 アドバイスあれば、宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#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)
その他の回答 (1)
- jamshid6
- ベストアンサー率88% (591/669)
回答No.1
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の逆)を削除したいのです。 アドバイスあれば、宜しくお願いします。