如何设置在更改表之后添加的列的值等于sql server 2008中的行no。这就是我希望列的值等于no。排。我也希望这个字段允许NULL值。所以它就像自动增量但允许空值,这就是为什么不想使用带有自动增量的标识或主键列的原因。那怎么设置为排?任何帮助将不胜感激。
答案 0 :(得分:11)
如果您尝试使用ROW_NUMBER()直接更新列,您将获得...
窗口函数只能出现在SELECT或ORDER BY子句中。
...所以改为INNER将表格加入到自身......
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]
答案 1 :(得分:1)
怎么样:它会将所需列的值更新为行号。
select 'Update myTable set row_No = ' +
CAST(ROW_NUMBER() over (order by ID) as varchar) + ' Where ID = ' +
cast(ID as varchar) from myTable
- 结果将生成一个更新语句,当您运行它时,会将所需列的值更新为行号。