要理解 Max() 函数,考虑 employee_tbl 表,它是具有以下记录:
mysql>SELECT * FROM employee_tbl
+------+------+------------+--------------------+
| id | name | work_date | daily_typing_pages |
+------+------+------------+--------------------+
|1 | John | 2007-01-24 |250 |
|2 | Ram | 2007-05-27 |220 |
|3 | Jack | 2007-05-06 |170 |
|3 | Jack | 2007-04-06 |100 |
|4 | Jill | 2007-04-06 |220 |
|5 | Zara | 2007-06-06 |300 |
|5 | Zara | 2007-02-06 |350 |
+------+------+------------+--------------------+
7 rows in set (0.00 sec)
现在,假设想获取上表中daily_typing_pages的字段的最大值对应的记录, 那么可以简单地使用下面的命令:
mysql>SELECT MAX(daily_typing_pages)
->FROM employee_tbl
+-------------------------+
| MAX(daily_typing_pages) |
+-------------------------+
| 350 |
+-------------------------+
1 row in set (0.00 sec)
可以使用GROUP BY子句找到所有记录中最大值对应的名字如下:
mysql>SELECT id, name, MAX(daily_typing_pages)
->FROM employee_tbl GROUP BY name
+------+------+-------------------------+
| id | name | MAX(daily_typing_pages) |
+------+------+-------------------------+
|3 | Jack | 170 |
|4 | Jill | 220 |
|1 | John | 250 |
|2 | Ram | 220 |
|5 | Zara | 350 |
+------+------+-------------------------+
5 rows in set (0.00 sec)
可以使用 Min() 函数和 Max() 函数一起,找出最小值和最大值。试试下面的例子:
mysql>SELECT MIN(daily_typing_pages) least, MAX(daily_typing_pages) max
->FROM employee_tbl
+-------+------+
| least | max |
+-------+------+
| 100 | 350 |
+-------+------+
1 row in set (0.01 sec)
MySQL 的常见的聚合函数有 AVG、COUNT、SUM、MIN、MAX,上一小节介绍了 AVG、COUNT、SUM 三种聚合函数,本小节介绍如何使用 MIN、MAX 两种聚合函数,另外再介绍一下如何在 GROUP BY 中使用聚合函数。
以 teacher 表为例,先查所有 teacher 信息:
查询结果如下图:
可以使用 MIN() 函数对结果集取年龄最小值的数据:
执行结果如下图:
以 student 表为例,先查看所有 student 信息:
查询结果如下图:
可以使用 MAX() 函数对结果集取年龄最大值的数据:
执行结果如下图:
以 student_course、course、student 表内连接查询为例:
查询结果如下图:
使用 AVG 函数取分组数据平均年龄:
执行结果如下图 :
可以使用 HAVING 对上述结果筛选,例如选出选课学生平均年龄大于 20 的课程数据:
执行结果如下图:
本小节介绍了如何使用 MIN、MAX 两种聚合函数对查询结果集进行筛选,还介绍了如何在 GROUP BY中分组使用聚合函数,并且使用 HAVING 后面的条件对分组数据进行筛选,需要注意的是聚合函数产生的数据列最好重命名,这是因为后端程序语言在处理这些数据时需要规范的字段名,例如:
查询结果如下图:
用:select MAX(id) from table limit 0,1
Mysql中数字类型字段可直接使用MAX()函数,使用max函数查询一个字符串类型的字段时,因为字符串类型大小比较是先比较首字符,然后依次往后进行比较
如有数据:10000,9999。使用max查出来的最大值并不是10000,而是9999
解决方法如下:max(id+0)
扩展资料:注意事项
MAX()函数
1、MAX()函数是求最大值的函数;
eg:查询张三的所有科目中的最高分
SELECT stuName,MAX(score) FROM t_grade WHERE stuName="张三"
2、与 GOUPE BY 关键字一起使用
eg:查询所有学生分数最高的成绩
SELECT stuName,MAX(score) FROM t_grade GROUP BY stuName
MIN()函数
1、MIN()函数是求最小值的函数;
eg:查询张三的所有科目中的最低分
SELECT stuName,MIN(score) FROM t_grade WHERE stuName="张三"
2、与 GOUPE BY 关键字一起使用;
eg:查询所有学生分数最低的成绩
SELECT stuName,MIN(score) FROM t_grade GROUP BY stuName
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)