slt
思路1 使用WHERE子句
SELECT
score,
(SELECT COUNT(DISTINCT score) FROM Scores WHERE score >= s.score) AS `rank`
FROM Scores AS s
ORDER BY score DESC;
对于外部SELECT的每一条score,我们再用内部的SELECT,统计scores表中有多少个比外部记录大的记录的个数。
思路2 JOIN
SELECT s1.Score, COUNT(DISTINCT(s2.Score)) AS Rank
FROM Scores s1 JOIN Scores s2
WHERE s1.score<=s2.score
GROUP BY s1.Id
ORDER BY Rank;
Last updated
Was this helpful?