MySQL MIN() 函数返回表达式或表的指定列的最小值。类似地,MySQL MAX() 函数返回表达式或表的指定列的最大值。

语法

在 MySQL 中使用 MIN() 和 MAX() 函数的语法如下:

/* 使用 MIN() 函数 */
SELECT MIN(column_name) 
FROM table_name
WHERE condition(s);

/* 使用 MAX() 函数 */
SELECT MAX(column_name) 
FROM table_name
WHERE condition(s); 

MySQL GROUP BY子句用于在使用一列或多列时将结果表排列成相同的组。请注意,必须在 GROUP BY 子句中包含那些未封装在 MIN() / MAX() 函数中的列名。请参阅以下语法:

/* 使用 GROUP BY 和 MAX() 函数 */
SELECT column1, column2, ...
       MIN(column_name) 
FROM table_name
WHERE condition(s)
GROUP BY column1, column2, ...;

/* 使用 GROUP BY 和 MAX() 函数 */
SELECT column1, column2, ...
       MAX(column_name) 
FROM table_name
WHERE condition(s)
GROUP BY column1, column2, ...; 

示例 - 单列

考虑一个名为 Employee 的数据库表,其中包含以下记录:

EmpIDNameCityAgeSalary
1JohnLondon253000
2MarryNew York242750
3JoParis272800
4KimAmsterdam303100
5RameshNew Delhi283000
6HuangBeijing282800

要获取Employee表中存在的员工的最低Salary,查询将be:

SELECT MIN(Salary) AS MinSalary 
FROM Employee; 

这将产生如下所示的结果:

MinSalary
2750

获取Employee 表中存在的员工最高Salary ,可以使用以下查询:

SELECT MAX(Salary) AS MaxSalary 
FROM Employee; 

以下代码的结果将是:

MaxSalary
3100

示例 - 使用 GROUP BY

考虑上面讨论的名为 Employee 的数据库,其中包含以下记录:

EmpIDNameCityAgeSalary
1JohnLondon253000
2MarryNew York242750
3JoParis272800
4KimAmsterdam303100
5RameshNew Delhi283000
6HuangBeijing282800

按照年龄分组获取不同年龄的最低工资,其中年龄大于27岁,可以使用以下查询:

SELECT Age, MIN(Salary) AS MinSalary 
FROM Employee
WHERE Age > 27
GROUP BY Age; 

上述代码的结果将是:

AgeMinSalary
282800
303100

按照年龄分组获取不同年龄的最高工资,其中年龄大于27,查询将是:

SELECT Age, MAX(Salary) AS MaxSalary 
FROM Employee
WHERE Age > 27
GROUP BY Age; 

上述代码的结果将是:

AgeMaxSalary
283000
303100