将记录索引保存到列

时间:2012-10-20 02:49:11

标签: sql sql-server

我想将表中每条记录的索引保存到该记录的索引列中。所以我要说我对记录进行了排序:

select * from Users order by DateTimeCreated

现在,让我们说我想在这个排序中缓存他们的位置。我想做这样的事情:

update Users set SortedIndex=GETINDEX() order by DateTimeCreated

我该怎么办?我可以用C#编写代码,但我更喜欢一种比循环和单独设置每条记录更有效的方法。我需要预先确定的这个数字(写在每条记录上)而不是在运行时确定。谢谢。

1 个答案:

答案 0 :(得分:4)

试试这个

update users set SortedIndex=row from
(
  select userid, row_number() over(order by DateTimeCreated desc) as row from users 
) u
where users.userid = u.userid