编辑 :这是MySQL 4.1+支持
采用:
SELECt st.name, sc.grades, CASE WHEN @grade = COALESCE(sc.grades, 0) THEN @rownum ELSE @rownum := @rownum + 1END AS rank, @grade := COALESCE(sc.grades, 0) FROM STUDENTS stLEFT JOIN SCORES sc ON sc.student_id = st.id JOIN (SELECT @rownum := 0, @grade := NULL) r ORDER BY sc.grades DESC
您可以使用交叉连接(在MySQL中为不带任何条件的INNER JOIN)来声明和使用变量,而无需使用单独的
SET语句。
您需要COALESCE来正确处理NULL。



