【发布时间】:2020-02-04 08:27:48
【问题描述】:
我有一张这样的桌子:
CREATE TABLE #TempTable
(
COLUMN1 INT,
COLUMN2 INT
)
INSERT INTO #TempTable
(
COLUMN1,
COLUMN2
)
VALUES
(1, 5),
(2, 4),
(3, NULL),
(4, 2),
(5, NULL)
我想更新 COLUMN2 以使用列中的 MAX 值添加自动增量。
我试过这个查询:
DECLARE @maxNumber INT = 0;
SELECT @maxNumber = ISNULL(MAX(COLUMN2), 0) + 1
FROM #TempTable
SELECT @maxNumber
CREATE SEQUENCE [tempSqu] AS [int] START
WITH @maxNumber INCREMENT BY 1
UPDATE #TempTable
SET COLUMN2 = NEXT VALUE FOR [tempSqu]
WHERE COLUMN2 IS NULL
DROP sequence [tempSqu]
输出:
COLUMN1 COLUMN2
--------------------
1 5
2 4
3 6
4 2
5 7
【问题讨论】:
-
您能否在问题中包含更新后的预期输出,以便更清楚?
-
你想做什么?如果最新的条目被删除或更改,使用
MAX+1总是会产生重复的值。您也不需要 SEQUENCE 来生成递增值,您可以使用ROW_NUMBER()或任何其他排名函数来为每一行生成排名号
标签: sql sql-server