不败君

前端萌新&初级后端攻城狮

SQL查询每科分数最高的

SQL查询每科分数最高的

2020-09-28 21:40:12

围观(5389)

假设数据表 examinationiɡ 有以下数据:

+----+------+---------+--------+
| id | name | subject | number |
+----+------+---------+--------+
| 1  | A    | 数学    | 100    |
| 2  | A    | 语文    | 90     |
| 3  | A    | 英语    | 70     |
| 4  | B    | 数学    | 60     |
| 5  | B    | 语文    | 70     |
| 6  | B    | 英语    | 80     |
+----+------+---------+--------+

现在的需求是:获取 数学 / 语文 / 英语 三个科目每个科目最高分的。 通俗点说就是获取每科第一名的。

可以使用 JOIN:

SELECT e1.*
FROM `examinationiɡ` e1
JOIN(
	SELECT `subject`, MAX(number) max_number
	FROM `examinationiɡ`
	GROUP BY `subject`
) e2 ON e1.`subject` = e2.`subject` AND e1.number = e2.max_number

返回的结果:

+----+------+---------+--------+
| id | name | subject | number |
+----+------+---------+--------+
| 1  | A    | 数学    | 100    |
| 2  | A    | 语文    | 90     |
| 6  | B    | 英语    | 80     |
+----+------+---------+--------+


如果只需要某个科目可以这样:

SELECT e1.*
FROM `examinationiɡ` e1
JOIN(
	SELECT `subject`, MAX(number) max_number
	FROM `examinationiɡ`
	GROUP BY `subject`
) e2 ON e1.`subject` = '数学' AND e1.number = e2.max_number

返回的结果:

+----+------+---------+--------+
| id | name | subject | number |
+----+------+---------+--------+
| 1  | A    | 数学    | 100    |
+----+------+---------+--------+

本文地址 : bubaijun.com/page.php?id=209

版权声明 : 未经允许禁止转载!

评论:我要评论
发布评论:
Copyright © 不败君 粤ICP备18102917号-1

不败君

首 页 作 品 微 语