如何在将结果排序为mysql查询时处理关系?我已经简化在这个例子中,表名和列,但它应该说明我的问题:如何在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和艾米具有相同一级排名高于另一级。艾米被扯掉了。我怎么能这样做,以便艾米和艾尔有相同的排名,所以他们都有1的排名。另外,威廉和玛丽没有参加测试。他们上课并在男孩的房间里吸烟。他们应该被绑在最后一个地方。
正确的排序应该是:
Students Rank Grades
========================
Al 1 90
Amy 1 90
George 2 78
Bob 3 73
Mary 4 NULL
William 4 NULL
如果任何人有任何建议,请让我知道。
嗨OMG小马, 你是MySQL终结者!太棒了,非常感谢你的帮助。我从来不会想到它。 (我的SQL知识很基础,所以我必须研究你的答案才能更好地理解它)。 另外,我喜欢你的屏幕名称。 再次感谢! “ -Laxmidi – Laxmidi 2010-03-19 02:23:40
”您可以使用交叉连接(在MySQL中,没有任何条件的INNER JOIN)来声明和使用变量,而不使用单独的SET语句。“该死的,我不知道你能做到这一点。 +1 – heisenberg 2010-03-19 03:11:34
如果可以的话,我会再次投票。壮观。 – duffymo 2010-03-19 12:05:50