我需要获取按列ssid找到的玩家位置,现在我正在使用此查询
SELECT Count(*) + 1 AS pos
FROM user_data
WHERE honor > (
SELECT honor
FROM user_data
WHERE ssid = ''
)
但这不适用于具有相同荣誉的玩家,因此我需要先按荣誉顺序订购,然后按lvl订购,如果用户名仍然与pos相同。
我不知道该怎么做,因此感谢您的所有回答。
最佳答案
尝试这个:
SELECT pos, honor, lvl, user_name
FROM (
SELECT honor, lvl, user_name, @r:=@r+1 as pos
FROM user_data, (select @r:=0) r0
WHERE ss_id=''
ORDER BY honor, lvl, user_name) user_data_ordered;
SQL Fiddle上的示例-我不得不猜测数据类型,但它与该查询无关:http://sqlfiddle.com/#!2/e69b8a/1
关于mysql - 具有相同值的MySQL数据库中行的位置(索引),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24843553/