如何在 sql server 2008 中将更改表后添加的列的值设置为等于 no 行。也就是说,我希望列的值等于 no。的行。我也希望这个字段允许 NULL 值。所以它就像自动增量但允许空值,这就是为什么不想使用具有自动增量的标识或主键列。那么如何将其设置为行号呢?任何帮助将不胜感激。
问问题
11391 次
2 回答
12
如果您尝试使用 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]
于 2012-11-08T11:13:11.920 回答
1
怎么样:它会将所需列的值更新为行号。
select 'Update myTable set row_No = ' +
CAST(ROW_NUMBER() over (order by ID) as varchar) + ' Where ID = ' +
cast(ID as varchar) from myTable
--结果将产生一个更新语句,当您运行它时,它将所需列的值更新为行号。
于 2013-01-13T21:14:49.573 回答