2017-01-04 2 views
0

私は随時データベースを清掃するためにSPの一部として使用される単純な十分なクエリを持っています。表Aと表BはIDと関連しています。 TableAにすべてのIDを持つテーブル変数を作成し、TableBに表示されているものをすべて削除します。このsintaxは正常に動作します:同等のクエリに参加する

このクエリは、IN(副問合せ)の代わりに、JOINで行うことができますどのように
DELETE @TableIds 
FROM @TableIds AS tids 
WHERE tids.sharedID IN (SELECT tb.sharedID FROM TableB AS tb WITH (nolock)) 

答えて

0

これを行うためにテーブル変数は必要ありません。一致するIDレコードを削除できるようにdeletejoinを使用してください。

delete a 
from tablea a 
join tableb b on a.id=b.id 
0

DELETE Tids 
    FROM @TableIds AS tids 
    INNER JOIN TABLEb TB(Nolock) ON TIDS.SHAREID=  TB.SHAREId 
以下のように試してみてください