php mysql在表顺序之后获取行id

6tdlim6h  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(325)

这个问题在这里已经有答案了

mysql中的rank函数(11个答案)
两年前关门了。
我不认为这是其他rank语句的重复,因为其他语句似乎没有在结果表中搜索特定用户
我有一张类似的table:

|       | column1 | column2 | column3 | column4 |
|-------|---------|---------|---------|---------|
| user1 | 100     | 49      | 3       | 1,980   |
| user2 | 7       | 5       | 51      | 500     |
| user3 | 1       | 65      | 44      | 307     |
| user4 | 6       | 66      | 445     | 397     |
| user5 | 4       | 67      | 442     | 437     |

我现在用这个语句对表进行排序:

$statement = "SELECT *
            FROM tracker_players
            ORDER BY (column1 + column2 + column3 + column4)
            DESC";

生成的表将是:

|       | column1 | column2 | column3 | column4 |
|-------|---------|---------|---------|---------|
| user3 | 1       | 65      | 44      | 307     | // 417
| user2 | 7       | 5       | 51      | 500     | // 563
| user4 | 6       | 66      | 445     | 397     | // 914
| user5 | 4       | 67      | 442     | 437     | // 950
| user1 | 100     | 49      | 3       | 1,980   | // 2132

一旦我把table分类好,我就想知道table的位置 userX 是在。即。 user5 位于位置4(如果索引为零,则为3)。
感谢您的帮助。关于这件事,我似乎找不到任何答案。
谢谢!

b4wnujal

b4wnujal1#

SELECT t.*, @rank := @rank + 1 as rank
FROM tracker_players t
CROSS JOIN (select @rank := 0) r
ORDER BY (t.column1 + t.column2 + t.column3 + t.column4) DESC

相关问题