mysql排行榜并列与不并列

本文介绍了三种SQL排名技巧:普通并列排行、高级并列排行及不并列排行,并提供了具体的MySQL实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分数表:

一、普通并列排行

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 5.7

 

SELECT
	Score,
	dense_rank () over (ORDER BY Score DESC) 'Rank'
FROM
	score;

二、高级并列排行

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

 

 

三、不并列排行

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值