如何在mysql中求最大最小值_mysql max和min函数说明

11次阅读

MySQL 中求最大值和最小值主要用 MAX()和 MIN()聚合函数,作用于某列返回非 NULL 极值;可单列使用、配合 GROUP BY 分组统计,或结合子查询、ORDER BY+LIMIT、窗口函数获取整行记录;注意 NULL 被忽略、字符按字典序、日期可直接比较。

如何在 mysql 中求最大最小值_mysql max 和 min 函数说明

MySQL 中求最大值和最小值,主要用 MAX()MIN() 聚合函数,它们作用于某一列,返回该列中的最大或最小非 NULL 值。

基本语法与单列使用

这两个函数用法一致,都接受一个表达式(通常是列名)作为参数:

  • SELECT MAX(列名) FROM 表名;
  • SELECT MIN(列名) FROM 表名;

例如:查询商品表中最高售价和最低售价

SELECT MAX(price) AS max_price, MIN(price) AS min_price FROM products;

配合 GROUP BY 分组求极值

当需要按类别分别统计最大 / 最小值时,加上 GROUP BY 即可:

  • 每个分类下的最贵和最便宜商品价格
  • 需注意:若要同时查出对应商品名称,不能只靠 MAX/MIN,需结合子查询或窗口函数(见下条)

SELECT category, MAX(price), MIN(price) FROM products GROUP BY category;

获取整行记录(不只是数值)

MAX/MIN 只返回值,不返回整行数据。若想查出“价格最高的那条商品完整信息”,有几种方式:

  • 用子查询匹配:WHERE price = (SELECT MAX(price) FROM products)
  • 用 ORDER BY + LIMIT:ORDER BY price DESC LIMIT 1(注意可能有多个并列最高)
  • MySQL 8.0+ 推荐用窗口函数:RANK() 或 ROW_NUMBER() 配合 OVER(ORDER BY price DESC)

注意事项与 常见问题

这些细节容易影响结果准确性:

  • NULL 值会被自动忽略,不会参与计算
  • 字符类型按字典序比较(如 ‘abc’ > ‘ab’),不是长度或数值大小
  • 日期类型可直接用 MAX/MIN 比较,得到最早 / 最晚时间
  • 聚合函数在没有 GROUP BY 时,整张表视为一组;有 GROUP BY 时按组分别计算
text=ZqhQzanResources