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
版权声明 : 未经允许禁止转载!
上一篇文章: Laravel 7 使用 Elasticsearch
下一篇文章: MySQL主从复制与读写分离