分数表:

mysql排行榜并列与不并列 

一、普通并列排行

SELECT
	*, (
		SELECT
			count(DISTINCT score)
		FROM
			scores AS b
		WHERE
			a.score < b.score
	) + 1 AS rank
FROM
	scores AS a
ORDER BY
	`rank`

 

mysql排行榜并列与不并列

二、高级并列排行

SELECT
	id,
	score,
	rank
FROM
	(
		SELECT
			id,
			score,
			@curRank :=
		IF (
			@prevRank = score,
			@curRank,
			@incRank
		) AS rank,
		@incRank := @incRank + 1,
		@prevRank := score
	FROM
		scores p,
		(
			SELECT
				@curRank := 0,
				@prevRank := NULL,
				@incRank := 1
		) r
	ORDER BY
		score
	) s

 

 mysql排行榜并列与不并列

三、不并列排行

SELECT
	id,
	score ,@rank := @rank + 1 AS rank
FROM
	(
		SELECT
			*
		FROM
			scores
		ORDER BY
			score DESC
	) AS obj,
	(SELECT @rank := 0) r

 

 mysql排行榜并列与不并列

相关文章: