我如何设置更改表等于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]

09-09 20:20