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



我正在使用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_compened.html

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

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

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

相关内容

  • 没有找到相关文章

最新更新