我在表中添加了一个新列。现在我想用函数 row_number() 的值更新此列。我想这样做是因为我想删除重复的条目。下面提到的代码没有给出所需的输出
UPDATE tab1
SET rownumber = (SELECT ROW_NUMBER() OVER(ORDER BY name ASC)
FROM tab1 AS a WHERE a.name = b.name)
FROM tab1 b
问题是,当在表中添加一个新列时,它的值为空。 Insert into 在表中添加新行但不替换空值。如何使用函数 ROW_NUMBER() 生成的行号更新空值。
下表是我的
名字得分
美国银行 10
商业银行 20
富国银行 135
中西部银行 45
美国银行 10
商业银行 20
现在我想要删除重复项后的输出
名字得分
美国银行 10
商业银行 20
富国银行 135
中西部银行 45
我试图添加一个具有唯一值的新列以获得所需的结果。
最佳答案
试试这个:
UPDATE T
SET T.rownumber = TT.ROW_ID
FROM tab1 AS T
INNER JOIN (SELECT ROW_NUMBER() OVER (ORDER BY name) AS ROW_ID
,name
FROM Tab1) AS TT
ON T.name = TT.name
关于sql-server-2008 - 如何在 SQL 中使用 ROW_NUMBER() 更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27836071/