在SQL中将值设置为0到n

Chu*_*ris 1 sql t-sql sql-server

如何将OrderNumber列中的所有值从1设置n(当它们按主键排序时),其中n是表中的条目数?

编辑:

假设我们有3个ID为4,7和15的条目...我想设置它们的OrderValues 1,2和3.
我正在使用SQL Server 2008.

Aar*_*and 9

;WITH x AS (SELECT ID, OrderValues, 
    rn = ROW_NUMBER() OVER (ORDER BY ID)
   FROM dbo.tablename
)
UPDATE x SET OrderValues = rn;
Run Code Online (Sandbox Code Playgroud)

但是,当你ROW_NUMBER()在查询时使用函数导出这些信息时,为什么要这样做呢?存储值意味着在插入/更新/删除表中的单个行时,它们可以保证过时并且不同步.因此,除非您计划在每次DML操作(例如使用触发器)之后运行此更新(这对我来说不合逻辑),否则在运行查询时将获取这些row_number值与将它们存储在表.