2012-01-12 2 views
0

Предположим, у меня есть таблица следующим образом в MySQL:MySQL предоставляет номер ранга при сортировке?

create table user(name varchar(20), join_time int(11))

Вот мой вопрос: при извлечении записей в join_time порядке DESC, как я могу получить номер ранга каждой записи?

Заранее спасибо.

ответ

3

Try:

select @rownum:[email protected]+1 `rank`, u.* 
from (select * from `user` order by join_time desc) u, 
    (SELECT @rownum:=0) r 
+1

Технически это номер строки, а не номер ранга. Хотя я не уверен, что ОП делает эту дифференциацию ... Итак, +1 :) – MatBailie

+0

На самом деле правильный, если рейтинг IS основан на JOIN_TIME DESCENDING – DRapp

0

Что вам нужно, это row_number() over (order by something), который вернет номер строки на основе предоставленного предложения, но я не уверен, что он доступен в mysql?

С некоторого поиска выяснилось, что нет функции row_number в MySQL, но есть много обходных путей, чтобы назвать один http://craftycodeblog.com/2010/09/13/rownum-simulation-with-mysql/

+0

Это не доступно в MySQL –

+0

Теперь я знаю, и ответ был обновлено. –

Смежные вопросы