Jeneckiy |
---|
Есть запрос
SELECT position FROM (SELECT position = ROW_NUMBER() OVER (ORDER BY Rating DESC), t.Id FROM table 1) t1 WHERE t1.Id=@id
|
Не смущает, что этот запрос может на одних и тех же данных возвращать разный результат?
"ROW_NUMBER() OVER (ORDER BY Rating DESC)" — у вас ведь, судя по описанию, тысячи записей с одним и тем же рейтингом — и в пределах этого рейтинга row_number() может вычисляться произвольным образом. Я смоделировал вашу ситуацию, и для одной и той же записи запрос возвращает то 253571, то 253580, то 253828...
Jeneckiy |
---|
она же и так отсортирована |
Отсортирована, но порядковый номер (row_number) никоим образом нигде не хранится. Поэтому он каждый раз вычисляется.