在MySQL表上创建数字顺序索引

时间:2010-04-06 14:28:26

标签: php mysql

我有一个表(基本上)有3列 - 名字,投票和排名。我想通过投票订购表格,然后更新'排名'以反映这个订单,这样投票最多的一个将排名设置为1,第二个投票最多为2等。

我可以在PHP中执行此操作,但这看起来非常浪费 - 有没有办法在一个SQL查询中执行此操作而无需手动处理PHP中的每个记录?

2 个答案:

答案 0 :(得分:2)

假设您不关心关系,您可以在查询中动态计算排名,而不是存储它。

 SET @rank=0;

 SELECT @rank:=@rank+1 AS rank, name, votes
 FROM yourTable
 ORDER BY votes DESC;

答案 1 :(得分:2)

虽然@johnfx给了你正确的答案,但我认为你会对阅读本文的评论感兴趣 - http://arjen-lentz.livejournal.com/55083.html,其中解决了各种排名问题。