バッチ削除を実装しようとしています。私はインターネットでこのコードを見つけました:
DECLARE @rowcount int = 1
WHILE (@rowcount != 0 ) BEGIN
DELETE T1
FROM (SELECT TOP (50) * FROM Orders WHERE OrderCity = @city) T1
SELECT @rowcount = @@ROWCOUNT
END
アイデアは@cityからすべての注文を削除することです
それはうまくいくようですが、私の現実では、私はする必要がありますdelete from Orders where OrderCity in (select ID from SomeOtherTable)
同じことをしようとすると機能しますが、SomeOtherTableには約150万行が含まれ、データはメインテーブルから削除されるため、時間がかかります。そのため、データは小さくなりません(都市が含まれていないため、別物)。
また、複数のテーブルが影響を受けると言って実行されないため、両方のテーブルを結合することはできません。
だから基本的に私の質問は:tableA.ID IN(tableBからIDを選択)でtableAからバッチ削除する方法はありますか?