我对 sql 很陌生,所以如果这是一个笨拙的查询,请原谅。
从上图可以看出,我在 Sql DB 表中有一些数据,现在我需要从我指定的序列号开始每隔 4 行删除一次,然后需要重新编号 Serial_no 列而不改变行的顺序。
如果可能的话,我需要通过一个查询来完成所有这一切,但自过去 2 天以来一直在苦苦挣扎
希望大家能帮帮我。提前致谢
//USING THIS CODE TO DELETE every 4th row//
DELETE
FROM Tbl2
FROM
Tbl2 AS A
INNER JOIN
(
SELECT ROW_NUMBER() OVER(ORDER BY GETDATE()) AS CNT , *
FROM Tbl2
) AS B ON A.Serial_no = B.Serial_no
WHERE CNT%4 = 0 AND CNT >= 10
但是重新编号查询(下)
DECLARE @FIRSTID INT = 1000000010
UPDATE tbl2
SET Serial_no = @FIRSTID + ROW_NUMBER() OVER(ORDER BY Serial_no) - 1
FROM tbl2
抛出错误“消息 4108,级别 15,状态 1,第 8 行窗口函数只能出现在 SELECT 或 ORDER BY 子句中。”