如果我想删除TSQL中表中多达30k行,我就无法使用
delete from myTable where Id in (1,2,3,...,30k)
因为根据这篇文章http://support.microsoft.com/kb/288095,IN子句中的ID数量太大了
但是如何使用临时表和表连接重写我的查询以删除行?
编辑:ID不按顺序排列.它们被某些逻辑选中,因此它们只是myTable中的一些任意ID.
SELECT DISTINCT ID
INTO #tmpIDs
FROM tbl_IDTable
WHERE ID BETWEEN 1 AND 30000
DELETE MYTABLE
FROM MYTABLE t
INNER JOIN #tmpIDs d ON d.id = t.id
DROP TABLE #tmpIDs
Run Code Online (Sandbox Code Playgroud)
*如果它是另一个查询内部的问题*****
DELETE MYTABLE
FROM MYTABLE t
INNER JOIN (SELECT DISTINCT ID
FROM MYTABLE
WHERE ID BETWEEN 1 AND 30000) d d.id = t.id
Run Code Online (Sandbox Code Playgroud)