问题描述:
一张数据表中存储了某个班级各科目所有学生的成绩,需要从这张表中查出该班级各科得分最高的学生姓名以及分数
表结构如下:
CREATE TABLE `score` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL COMMENT '名字',
`subject` varchar(50) NOT NULL COMMENT '科目',
`score` int DEFAULT NULL COMMENT '分数',
PRIMARY KEY (`id`)
)
解决思路
1 查询各科目最高分数,sql代码如下:
SELECT SUBJECT, MAX(score) AS max_score FROM score
GROUP BY SUBJECT
2 通过科目以及最高分数这两个条件,查询各科目最高得分者信息,sql代码如下:
SELECT a.*, b.*
FROM score a
INNER JOIN
(
SELECT SUBJECT, MAX(score) AS max_score FROM score
GROUP BY SUBJECT
) b
ON a.subject = b.subject AND a.score = b.max_score