对表格进行排序并在插入新行时相应地更改排名

时间:2017-10-18 10:18:25

标签: mysql

我的数据库中有以下表格:

id  userid  totalpoints  ranks
1    142        50       2
2    143        60       1
3    144        40       3

如果我想插入新行,请选择

4  145  55

现在如何插入该行并根据使用mysqli和php的总点数相应地更改排名?

为了获得以下输出:

   id  userid  totalpoints  ranks
    2    143        60       1
    4    145        55       2
    1    142        50       3
    3    144        40       4

2 个答案:

答案 0 :(得分:2)

您不应将ranks存储在数据库中,因为这是派生值。相反,使用

SELECT ... ORDER BY totalpoints DESC 

何时需要这些数据。这将为您提供从高到低的点数排序。

答案 1 :(得分:0)

SELECT id,
    userid,
    totalpoints
    row_number() OVER (ORDER BY totalpoints) ranks
  FROM users 

您可以使用此sql查询来获取输出。