sql-server-2008 - 如何在 SQL 中使用 ROW_NUMBER() 更新列

标签 sql-server-2008

我在表中添加了一个新列。现在我想用函数 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/

相关文章:

sql-server - SSIS包作业执行完成后如何查看结果?

performance - CHARINDEX 与 LIKE 搜索给出了非常不同的性能,为什么?

sql-server-2008 - 无法将类型 "Microsoft.SqlServer.Management.Smo.Server"的值转换为类型 "Microsoft.SqlServer.Management.Smo.Server"

html - 适用于 HTML 和文本的回车符

asp.net - 问题设置订阅查询通知

SQL Server 在列上合并联接后选择

sql存储过程中的多次更新

python - SQL服务器触发器可以调用python函数吗?

sql - 使用 IN (NULL) 查询 SQL Server 不起作用

c# - 数据库的位置?