如何将OrderNumber
列中的所有值从 1 设置为 n (当按主键排序时) n 是表中的条目数吗?
修改
假设我们有3个ID为4,7和15的条目......我想设置它们的OrderValues 1,2和3。 我正在使用SQL Server 2008。
答案 0 :(得分:9)
;WITH x AS (SELECT ID, OrderValues,
rn = ROW_NUMBER() OVER (ORDER BY ID)
FROM dbo.tablename
)
UPDATE x SET OrderValues = rn;
但是,当您在查询时使用ROW_NUMBER()
函数获取此信息时,为什么要这样做呢?存储值意味着在插入/更新/删除表中的单个行时,它们可以保证过时并且不同步。因此,除非您计划在每次DML操作(例如使用触发器)之后运行此更新,这对我来说不太合乎逻辑,否则在运行查询时将获取这些row_number值与将它们存储在表