mysql 找'最'的集合

今天偶遇一条看似简单,含义很深的SQL语句。

学校有个全校同学的各科成绩表,表中包含名字,分数等。
现在要求要找出每个同学最高的分数是那一科。

SELECT s.id, s.name, s.book_name, s.score 
FROM book AS s
RIGHT JOIN (SELECT id, max(score) FROM book GROUP BY `name`) AS g ON s.id = g.id;

例子:

序号姓名学科分数
1小明历史50
2小明数学30
3小明化学60
4小明美术80
5小红英语90
6小红性教育70
7小红体育50
8小红历史60
9小红政治10
10小红音乐20
11小红计算机30
12小黄体育50
13小黄化学40
14小黄性教育70
15小黄计算机90
16小花化学80
17小花历史50
18小花物理30
19小花体育30
20小花美术80

结果:

序号姓名学科分数
4小明美术80
5小红英语90
20小花美术80
15小黄计算机90
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值