1

テーブル内の各レコードのインデックスをそのレコードのインデックス列に保存したいと思います。それで、私が自分のレコードをソートしたとしましょう:

select * from Users order by DateTimeCreated

ここで、この並べ替えでそれらの位置をキャッシュしたいとします。私はこのようなことをしたいと思います:

update Users set SortedIndex=GETINDEX() order by DateTimeCreated

どうすればこのようなことができますか?C#でコーディングすることもできますが、各レコードを個別にループして設定するよりも効率的な方法をお勧めします。この番号は、実行時に決定されるのではなく、事前に決定されている(各レコードに書き込まれている)必要があります。ありがとうございました。

4

1 に答える 1

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
于 2012-10-20T03:09:25.267 に答える