如何将Row_Number计算列添加到现有表

问题描述 投票:0回答:1

我正在使用SSMS 17.4。我需要添加一个使用Row_Number()函数的新列。但是这种语法似乎无效

我尝试了三种不同的方式,但没有一种方法可行。

ALTER TABLE MYDB.[dbo].[Table1]
ADD Rn INT NOT NULL AS (ROW_NUMBER() OVER (PARTITION BY [MyColumn] ORDER BY [MyColumn]));

ALTER TABLE MYDB.[dbo].[Table1]
ADD ROW_NUMBER() OVER (PARTITION BY [MyColumn] ORDER BY [MyColumn]) INT NOT NULL AS Rn;


ALTER TABLE MYDB.[dbo].[Table1]
ADD Rn INT NOT NULL ROW_NUMBER() OVER (PARTITION BY [MyColumn] ORDER BY [MyColumn]);

我也在此链接上尝试了以下建议

https://ss64.com/sql/table_a_computed.html

   ALTER TABLE MYDB.[dbo].[Table1]
ADD Rn INT NOT NULL ADD Rn AS ROW_NUMBER() OVER (PARTITION BY [MyColumn] ORDER BY [MyColumn]);
sql-server partitioning calculated-columns row-number identity-column
1个回答
3
投票

您要做的是为表创建一个计算列,每当插入,删除或更新记录时,该列可能会更改许多其他记录。考虑到重要的性能影响,我认为任何SQL引擎都不会允许这样做。

我建议创建一个具有您要查找的行号列的视图,然后像表一样引用该视图。在这种情况下,只要引用视图,就会动态计算它。

© www.soinside.com 2019 - 2024. All rights reserved.