MySQL MAX() 函数使用指南
MySQL MAX()
函数返回表达式代表的所有值中的最大值。
如果您需要获取一个表达式中的最小值,请使用 MIN()
函数。
MAX()
语法
这里是 MySQL MAX()
函数的语法:
MAX(expr)
我们通常在 SQL 中按如下方式使用 MAX()
函数:
SELECT MAX(expr), ...
FROM table_name
[WHERE ...];
或者按如下方式结合 GROUP BY
子句使用 MAX()
函数:
SELECT MAX(expr), group_expr1, group_expr2, ...
FROM table_name
[WHERE ...]
GROUP BY group_expr1, group_expr2, ...;
参数
expr
expr
一个用于聚合运算的表达式。它可以是一个列名,也可以是一个表达式。group_expr1, group_expr2, ...
- 用于分组的表达式或者列名。
返回值
MAX(expr)
函数返回表达式代表的所有值中的最大值。
如果没有匹配的行,MAX()
函数返回 NULL
。
MAX()
示例
我们将通过 student_score
表进行演示。让我们先创建演示表并插入测试数据。
CREATE TABLE `student_score` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`subject` VARCHAR(255) NOT NULL,
`score` INT NOT NULL
);
INSERT INTO `student_score` (`name`, `subject`, `score`)
VALUES ('Tom', 'Math', 80),
('Tom', 'English', 90),
('Jim', 'Math', 84),
('Jim', 'English', 96),
('Tim', 'Math', 80),
('Tim', 'English', 98);
以下是表中的数据:
+----+------+---------+-------+
| id | name | subject | score |
+----+------+---------+-------+
| 1 | Tom | Math | 80 |
| 2 | Tom | English | 90 |
| 3 | Jim | Math | 84 |
| 4 | Jim | English | 96 |
| 5 | Tim | Math | 80 |
| 6 | Tim | English | 98 |
+----+------+---------+-------+
MAX()
简单例子
以下 SQL 语句返回所有成绩中的最高成绩。
SELECT MAX(score) from student_score;
+------------+
| MAX(score) |
+------------+
| 98 |
+------------+
MAX()
结合 GROUP BY
让我们使用 MAX()
结合 GROUP BY
来从更多的维度查看最高的成绩。
-
查询每个科目的最高成绩
SELECT subject, MAX(score) FROM student_score GROUP BY subject;
+---------+------------+ | subject | MAX(score) | +---------+------------+ | Math | 84 | | English | 98 | +---------+------------+
这里,MySQL 会根据
GROUP BY subject
首先按照subject
将结果集分组,然后在每个组内再执行MAX(score)
。 -
查询每个人的最高成绩
SELECT name, MAX(score) FROM student_score GROUP BY name;
+------+------------+ | name | MAX(score) | +------+------------+ | Tom | 90 | | Jim | 96 | | Tim | 98 | +------+------------+
这里,MySQL 会根据
GROUP BY name
首先按照name
将结果集分组,然后在每个组内再执行MAX(score)
。