我为这个问题找到了一些好的答案,但我无法真正让它们发挥作用。
我不想从他的核心桌上获得球员排名。
id name score
1 John 10
2 Linda 5
3 Emmy 25
我想在查询中传递一个名字(Linda)并获得她的排名(她在上表中只有5分),并得到她的排名(nr 3)。
我在这个答案中找到了一个类似的问题,但是不明白:
SELECT uo.*,
(
SELECT COUNT(*)
FROM users ui
WHERE (ui.points, ui.id) >= (uo.points, uo.id)
) AS rank
FROM users uo
WHERE id = @id
提前致谢
答案 0 :(得分:2)
SELECT (COUNT(*) + 1) AS rank FROM hiscore WHERE score > (SELECT score FROM hiscore WHERE name = 'Linda')
答案 1 :(得分:1)
SET @rownum := 0;
SELECT rank, name, score
FROM
(SELECT @rownum := @rownum + 1 AS rank, name, score
FROM players
ORDER BY score DESC)
答案 2 :(得分:1)
我不知道你想要什么。表格旁边的整数是否为“前10名”?
选中此link
答案 3 :(得分:1)
尝试此查询 -
SELECT name, score, rank FROM
(SELECT *, @r:=@r + 1 rank FROM table_name ORDER BY score DESC) t1,
(SELECT @r:=0) t2
WHERE name = 'Linda'