php - 使用 ORDER BY DESC 排名,但更新列

标签 php mysql sql

嘿,我有一个包含以下数据的阶梯排名:

http://i.stack.imgur.com/eNCOO.png

忽略胜利、失败、等级。

问题是,在团队表上我有一个排名列,我在图像上的表上使用的排名只是一个 i 变量,它从 0 开始,当完成 while 循环时递增 1。 如何将排名栏更新为按积分排序的真实排名?

最佳答案

您可以通过更新/加入来完成此操作:

update rankings r join
       (select r.id, @rn := @rn + 1 as ranking
        from rankings r cross join
             (select @rn := 0) vars
        order by points desc
       ) rp
       on r.id = rp.id
    set r.ranking = rp.ranking;

子查询使用变量来计算排名。

关于php - 使用 ORDER BY DESC 排名,但更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24366077/

相关文章:

php - Symfony 测试 - ClockMock/DateTime

php - 如何选择特定用户?

php - 如何将 3 个文件合并到一张表中?

mysql - 不使用 JOIN 查询多个数据库表?

javascript - 单击 PayPal 购买按钮时如何显示 Window.alert

mysql - 如何在 INSERT 之前检查 mysql 中的值

从12月16日到31日删除ascii码的Mysql脚本

c# - C#如何在 Crystal 报表的一行中添加一个单词

sql - 警告 SQL71502 - 过程 <名称> 具有对对象 <名称> 的未解析引用

sql - 如何在 Yii2 ActiveQuery 中选择索引