代码之家  ›  专栏  ›  技术社区  ›  DCD

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

  •  1
  • DCD  · 技术社区  · 16 年前

    我有一个表(本质上)有3列-名称,投票和排名。我想通过投票排序表,然后更新“rank”以反映此顺序,这样得票最多的表的rank将设置为1,得票次多的表的rank将设置为2等。

    我可以在php中完成这项工作,但这似乎非常浪费——有没有一种方法可以在一个sql查询中完成这项工作,而不必手动处理php中的每个记录?

    2 回复  |  直到 16 年前
        1
  •  2
  •   JohnFx    16 年前

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

     SET @rank=0;
    
     SELECT @rank:=@rank+1 AS rank, name, votes
     FROM yourTable
     ORDER BY votes DESC;
    
        2
  •  2
  •   Ivo Sabev    16 年前

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