我需要在 mysql 表中给出排名,假设有表名 test 标记为 45,55,55,65,75 那么 75 应该有排名 1 等等
原表
name marks
tom 55
joe 56
sally 57
需要的结果
name marks rank
tom 55 3
joe 56 2
sally 57 1
您需要按标记对用户进行排序,然后计算他们的位置。这可以通过以下方式完成:
SET @rownum := 0;
SELECT @rownum := @rownum+1 AS rank, name, marks
FROM your_table
ORDER BY marks DESC
试试这个查询 -
SELECT t.* FROM (
SELECT t1.*, @r:=@r+1 rank FROM (SELECT * FROM table ORDER BY marks DESC) t1,
(SELECT @r:=0) t2
) t
ORDER BY marks
我有一些相同的问题和答案是相同的。
如果您有任何疑问,请告诉我。
对于您的表查询将是
SELECT name, marks,
(SELECT COUNT(distinct u2.marks) FROM myTable u2
WHERE
u2.marks > u1.marks) + 1 AS rank FROM myTable u1
ORDER BY rank DESC
在此查询中替换myTable
为您的表名。
此外,在结果中,请注意等级 3。
如果您想要排名 5 而不是 4,请使用COUNT(*)
而不是COUNT(distinct u2.marks)
.