我正在尝试使用这个脚本:
UPDATE tablename
SET tablecolumn = abs(checksum(NewId()) % 100 + 1)
WHERE ID between 162 and 166
我想要做的是将第162到166行更新为1-5,如下所示:
162 1
163 2
164 3
165 4
166 5
我正在尝试使用这个脚本:
UPDATE tablename
SET tablecolumn = abs(checksum(NewId()) % 100 + 1)
WHERE ID between 162 and 166
我想要做的是将第162到166行更新为1-5,如下所示:
162 1
163 2
164 3
165 4
166 5
您可以使用ROW_NUMBER()生成序列。但是SET column = ROW_NUMBER() ...
无效。相反,您需要在内联视图(或CTE)中选择值,然后更新值。
UPDATE t
SET t.tablecolumn = t.tablecolumn_new
FROM (
SELECT id, tablecolumn, ROW_NUMBER() OVER (ORDER BY [id]) AS tablecolumn_new
FROM tablename
WHERE id between 162 and 166
) t;
万一有人只需要特定的值而不是答案...SQL信用归功于@Conrad Frix。
UPDATE t
SET t.tablecolumn = 100 --Changed this
FROM (
SELECT id, tablecolumn --Changed this
FROM tablename
WHERE id between 162 and 166
) t;
newid()
与此有什么关系? - shawnt00