sql - 使用 SQL UPDATE 自动生成排序顺序

标签 sql sql-server-2005

我最近将大约 60k 条记录导入到一个表中,该表将一个表中的数据与另一个表中的数据相关联。但是,我的客户此后要求将排序顺序添加到所有 60k 记录中。我希望有一种很好的干净的方法可以在 SQL 更新中自动生成这些排序顺序。完成的数据应该是这样的:

item1ID  item2ID  sortOrder
1           123       1
1           12        2
1           45        3
1           22        4
1           456       5
2           5         1
2           234       2
2           56        3

这能做到吗?任何建议将不胜感激。

--安妮

最佳答案

您可以使用 [ROW_NUMBER][1] 并按 Item1ID 进行分区

UPDATE t1
SET t1.SortOrder = t2.SortOrder 
FROM @t t1
INNER JOIN
(SELECT Item1ID, Item2ID, ROW_NUMBER() OVER
    (PARTITION BY Item1ID ORDER BY Item1ID, Item2ID) AS SortOrder
from @t) t2
ON t1.Item1ID = t2.Item1ID 
AND t1.Item2ID = t2.Item2ID

关于sql - 使用 SQL UPDATE 自动生成排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/511925/

相关文章:

mysql - 我可以在 MySQL 查询中使用 preg_replace 或 regex 吗?

sql - 窗口函数调用需要 OVER 子句

SQL 仅联接 1 行 - SQL Server 2005

sql-server-2005 - SQL Server 2005 中数据库加密的最佳实践

sql - 如何将对角线行转换为单行?

php 从五个表中选择查询,每个表的第一个字段中都有 client_id

mysql - Grails Gorm 的经度、纬度和距离标准

ruby-on-rails - 通过 activerecord-sqlserver-adapter 连接到 SQL Server 2005 时从 Rails 执行 SQL 查询

sql-server - 在 SQL Server 2005 中创建新的数据库用户

c# - LINQ to SQL 实体列名称属性被 guid 主键忽略