Создание числового индекса порядка в таблице MySQL - PullRequest
1 голос
/ 06 апреля 2010

У меня есть таблица с (по существу) 3 столбцами - имя, голоса и звание. Я хочу упорядочить таблицу по голосам, а затем обновить 'rank', чтобы отразить этот порядок, так чтобы у того, у кого наибольшее количество голосов, было присвоено звание 1, а у второго - 2 и т. Д.

Я могу сделать это в PHP, но это кажется довольно расточительным - есть ли способ сделать это одним SQL-запросом без необходимости вручную обрабатывать каждую запись в PHP?

Ответы [ 2 ]

2 голосов
/ 06 апреля 2010

Хотя @johnfx дал вам правильный ответ, я думаю, вам будет интересно прочитать комментарии к этой статье - http://arjen -lentz.livejournal.com / 55083.html , где решаются различные проблемы ранжирования.

2 голосов
/ 06 апреля 2010

Предполагая, что вы не заботитесь о связях, вы можете просто динамически вычислять рейтинг в ваших запросах, а не сохранять его.

 SET @rank=0;

 SELECT @rank:=@rank+1 AS rank, name, votes
 FROM yourTable
 ORDER BY votes DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...