4

如何在 sql server 2008 中将更改表后添加的列的值设置为等于 no 行。也就是说,我希望列的值等于 no。的行。我也希望这个字段允许 NULL 值。所以它就像自动增量但允许空值,这就是为什么不想使用具有自动增量的标识或主键列。那么如何将其设置为行号呢?任何帮助将不胜感激。

4

2 回答 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 回答