如何将 Row_Number 计算列添加到现有 table
How to add Row_Number computed column to an existing table
我正在使用 SSMS 17.4。我需要添加一个使用 Row_Number() 函数的新列。但是那个语法似乎是无效的
我尝试了三种不同的方法,但 none 成功了。
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]);
我也试过这个 link
的建议
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]);
您要做的是为 table 创建一个计算列,无论何时插入、删除或更新记录,它都可能更改许多其他记录。考虑到显着的性能影响,我认为任何 SQL 引擎都不允许这样做。
我建议创建一个视图,而不是包含您要查找的行号列,然后像 table 一样引用该视图。在这种情况下,只要引用视图,就会动态计算它。
我正在使用 SSMS 17.4。我需要添加一个使用 Row_Number() 函数的新列。但是那个语法似乎是无效的
我尝试了三种不同的方法,但 none 成功了。
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]);
我也试过这个 link
的建议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]);
您要做的是为 table 创建一个计算列,无论何时插入、删除或更新记录,它都可能更改许多其他记录。考虑到显着的性能影响,我认为任何 SQL 引擎都不允许这样做。
我建议创建一个视图,而不是包含您要查找的行号列,然后像 table 一样引用该视图。在这种情况下,只要引用视图,就会动态计算它。