我如何设置更改表等于sql server 2008中的行号后添加的列的值。那就是我希望该列的值等于否。行。我也希望该字段允许NULL值。因此,这就像自动递增,但允许使用空值,这就是为什么不想在自动递增中使用标识或主键列。那么如何将其设置为行号呢?任何帮助将不胜感激。
最佳答案
如果尝试使用ROW_NUMBER()直接更新列,则会得到...
窗口函数只能出现在SELECT或ORDER BY子句中。
...因此改为将表INNER JOIN本身...
UPDATE
[test123]
SET
[row_number] = [x].[rn]
FROM
[test123]
INNER JOIN
(
SELECT
[test_id],
ROW_NUMBER() OVER (ORDER BY [test_id]) AS rn
FROM
[test123]
) AS x
ON
[test123].[test_id] = [x].[test_id]