每次添加新行时更新列表

vkc1a9a2  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(203)

我使用php将数据插入数据库。我有一个叫做games的表,它是这样定义的:

ID  |  Score  |  Rank

我希望每次添加新行时都更新rank列。排名栏必须按得分对游戏进行排序。
例如:

ID  |  Score  |  Rank
1   |    5    |   2
2   |    9    |   1

当我添加新行(id=3,score=15)时,我的表将如下所示:

ID  |  Score  |  Rank
1   |    5    |   3
2   |    9    |   2
3   |   15    |   1

我在php中尝试过,但似乎不起作用:

try {
   $bdd->exec("INSERT INTO games(score) VALUES('$score')");
} catch (Exception $e) {
   die ($e->getMessage());
}

try {
       $bdd->exec("UPDATE games set rank=(SELECT @curRank := @curRank + 1 
       AS rank FROM games g, (SELECT @curRank := 0) r
       ORDER BY  score;)");
    } catch (Exception $e) {
       die ($e->getMessage());
    }

你知道如何用php来实现这一点吗?或者有没有办法将列值默认设置为分数的排名?

bvjxkvbb

bvjxkvbb1#

try {
   $bdd->exec("SET @pos := 0;
   UPDATE games SET rank= ( SELECT @pos := @pos + 1 ) ORDER BY score DESC;)");
} catch (Exception $e) {
   die ($e->getMessage());
}

这对我有用。无论如何谢谢你。

相关问题