我正在尝试实现批量删除。我在网上找到了这段代码:
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中批量删除tableA.ID IN(从tableB中选择ID)