【发布时间】:2010-08-18 05:00:08
【问题描述】:
假设我有一个 1000 行的表(id int,Name varchar)。现在我希望删除每第 n 条记录(每 2、3 或 5 条)。最有效的方法是什么?
【问题讨论】:
标签: sql sql-server database tsql
假设我有一个 1000 行的表(id int,Name varchar)。现在我希望删除每第 n 条记录(每 2、3 或 5 条)。最有效的方法是什么?
【问题讨论】:
标签: sql sql-server database tsql
对于 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
对于每第三行,将 WHERE 子句更改为:
WHERE rank%3 = 0
Anf 每五行:
WHERE rank%5 = 0
这使用模数,它返回除法的余数。如果余数为零,则被除数是除数的倍数。
【讨论】: