【问题标题】:Deleting every nth row SQL删除每 n 行 SQL
【发布时间】:2010-08-18 05:00:08
【问题描述】:

假设我有一个 1000 行的表(id int,Name varchar)。现在我希望删除每第 n 条记录(每 2、3 或 5 条)。最有效的方法是什么?

【问题讨论】:

    标签: sql sql-server database tsql


    【解决方案1】:

    对于 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
    

    这使用模数,它返回除法的余数。如果余数为零,则被除数是除数的倍数。

    【讨论】:

      猜你喜欢
      • 2011-03-02
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 2019-05-31
      • 1970-01-01
      相关资源
      最近更新 更多