有一个像这样的表test_table:
==============
id | score
==============
1 | 22222
2 | 33333
3 | 789877
4 | 444
5 | 555
如何在一个查询中获取特定id的位置,按分数字段按DESC顺序排序?我需要根据他当前的结果为每个玩家输出他当前的位置。
我从搜索中尝试了这个选项,但结果不一样。位置编号始终为 1。
SELECT @n:=@n+1 AS row_number, score FROM (SELECT @n:=0, score FROM test_table t1 WHERE id=4 ORDER by score DESC) t2;
尝试了类似问题的解决方案,但出现错误。
SELECT * FROM (
SELECT @i := @i + 1 AS row_number, test_table.id as id
FROM test_table ORDER BY test_table.score DESC, (select @i:=0) AS z) as m WHERE id=4;
错误
[Err] 1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 'AS z) as m WHERE val=4' 附近使用正确的语法
适用于 5.x 及更高版本:
UPD:如果只需要一个 ID: