我有一个表(基本上)有3列 - 名字,投票和排名。我想通过投票订购表格,然后更新'排名'以反映这个订单,这样投票最多的一个将排名设置为1,第二个投票最多为2等。
我可以在PHP中执行此操作,但这看起来非常浪费 - 有没有办法在一个SQL查询中执行此操作而无需手动处理PHP中的每个记录?
答案 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,其中解决了各种排名问题。