我需要获得列ssid找到的玩家位置,现在我正在使用此查询
SELECT Count(*) + 1 AS pos
FROM user_data
WHERE honor > (
SELECT honor
FROM user_data
WHERE ssid = ''
)
但这对于有相同荣誉的玩家不起作用,所以我需要先按照荣誉订购,然后再按lvl订购,如果它仍然是user_name的相同位置。
我不知道该怎么做,所以感谢所有答案。
答案 0 :(得分:0)
试试这个:
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 Fillde的示例 - 我不得不猜测数据类型,但它不应与此查询相关:http://sqlfiddle.com/#!2/e69b8a/1