假设我有一个1000行的表(id int,Name varchar)。现在我希望删除每个第n条记录(每隔2,3或5)。最有效的方法是什么?
答案 0 :(得分:26)
对于SQL Server 2005 +
WITH example AS (
SELECT t.*, ROW_NUMBER() OVER (ORDER BY t.id) AS rank
FROM TABLE t)
DELETE example
WHERE rank%2 = 0
对于每第3行,将WHERE子句更改为:
WHERE rank%3 = 0
每五行一次的Anf:
WHERE rank%5 = 0
这使用模数,它返回除法的余数。如果余数为零,则除以的值是除数的倍数。