如何在將結果排序爲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