MySQL 分组排序取最后

表数据
idnamesubject_namescore
1张三语文100
2张三数学90
3张三英语80
4李四语文90
5李四数学95
6李四英语90
7王五语文80
8王五数学85
9王五英语99
分组 SQL
SELECT
	id, name, subject_name, score
FROM (
    SELECT 
    	IF(@yy = a.subject_name, @xx := @xx + 1, @xx := 1) xx,
    	IF(@yy = a.subject_name, @yy, @yy := a.subject_name) yy,
    	a.*
    FROM
    	test a, (SELECT @xx := 0, @yy := NULL) b
    ORDER BY
    	a.subject_name, a.score DESC
) a
WHERE xx = 1;
运行结果
idnamesubject_namescore
5李四数学95
9王五英语99
1张三语文100
SQL 中间部分
SELECT 
   	IF(@yy = a.subject_name, @xx := @xx + 1, @xx := 1) xx,
   	IF(@yy = a.subject_name, @yy, @yy := a.subject_name) yy,
   	a.*
FROM
   	test a, (SELECT @xx := 0, @yy := NULL) b
ORDER BY
   	a.subject_name, a.score DESC
SQL 中间部分运行结果
xxyyidnamesubject_namescore
1数学5李四数学95
2数学2张三数学90
3数学8王五数学85
1英语9王五英语99
2英语6李四英语90
3英语3张三英语80
1语文1张三语文100
2语文4李四语文90
3语文7王五语文80
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值