当在MySQL查询中排列结果时,如何处理并列情况?在本示例中,我已经简化了表名和列名,但它应该能够说明我的问题:
因此,请想象上述查询产生的结果:
SET @rank=0;
SELECT student_names.students,
@rank := @rank +1 AS rank,
scores.grades
FROM student_names
LEFT JOIN scores ON student_names.students = scores.students
ORDER BY scores.grades DESC
因此,请想象上述查询产生的结果:
Students Rank Grades
=======================
Al 1 90
Amy 2 90
George 3 78
Bob 4 73
Mary 5 NULL
William 6 NULL
尽管Al和Amy的成绩相同,但其中一个排名高于另一个。Amy被欺骗了。我该如何使Amy和Al拥有相同的排名,以便他们都有排名1。此外,William和Mary没有参加测试。他们逃课并在男生洗手间吸烟。他们应该并列最后一名。
正确的排名应为:
Students Rank Grades
========================
Al 1 90
Amy 1 90
George 2 78
Bob 3 73
Mary 4 NULL
William 4 NULL
如果有任何建议,请告诉我。