暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Mysql:分组查询.pdf
55
12页
3次
2024-05-05
免费下载
Mysql:分组查询
分组查询
1分组查询是对数据按照某个或多个字段进行分组,在 MYSQL 中使 GROUP BY 关键字对
数据进行分组
2GROUP BY 关键字可以将查询结果按照某个字段或多个字段进行分组。字段中值相等的为
一组
⑴分组的核心是在查询 SQL 中指定分组的列名,然后根据该列的值进行分组,值相
的为一组
3、分组查询的基本的语法格式如下:
GROUP BY 字段名 [HAVING 条件表达式]
参数:
1、字段名:是指按照该字段的值进行分组(分组是所依据的列名称)
2HAVING 条件表达式:用来限制分组后的显示,符合条件表达式的结果将被显示
创建分组
1、对数据进行分组,一般有两种使用场景
⑴单独使用 GROUP BY 关键字,
⑵将 GROUP BY 关键字与聚合函数一起使用(常用)
2、对于 GROUP BY 子句的使用,需要注意以下几点:
GROUP BY 子句可以包含任意数目的列,使其可以对分组进行嵌套,为数据分组提供
更加细致的控
GROUP BY 子句列出的每个列都必须是检索列或有效的表达式,但不能是聚合函数。
若在 SELECT 语句中使用表达式,则必须 GROUP BY 句中指定相同的表达式
3若用于分组的列中包含有 NULL 值, NULL 将作为一个单独的分组返回;若该列中存在
多个 NULL 值,则将这些 NULL 值所在的行分为一组
GROUP BY 单独使用
单独使用 GROUP BY 关键字时,查询结果会只显示每个分组的第一条记
1:无过滤条件
mysql> SELECT * FROM polls_article;
+----+-----------+----------------+-------+--------+----------------------------+
| id | title | content | price | author | create_time |
+----+-----------+----------------+-------+--------+----------------------------+
| 1 | 三国演义 | 孙悟空大闹天宫 | 132 | 吴承恩 | 2020-09-13 14:48:30.000000 |
| 2 | 三国演义 1 | 东汉末年分三国 | 154 | 罗贯中 | 2020-09-13 12:48:30.962070 |
| 3 | 红楼梦 | 刘姥姥进大观 | 154 | 曹雪 | 2020-09-13 12:48:30.962070 |
| 4 | 水浒传 | 逼上梁山 | 140 | 施耐庵 | 2020-09-13 12:48:30.962070 |
| 7 | wed | dwd | 123 | 44 | 2020-10-13 17:08:50.493488 |
| 8 | ds | dwd | 123 | 32 | 2020-10-13 17:19:18.121264 |
| 9 | 西游记 | 西天取经 | 345 | NULL | 2020-11-14 15:48:59.000000 |
+----+-----------+----------------+-------+--------+----------------------------+
7 rows in set (0.00 sec)
-- 按照 price 字段对数据进行分组
mysql> SELECT * FROM polls_article GROUP BY price;
+----+-----------+----------------+-------+--------+----------------------------+
| id | title | content | price | author | create_time |
+----+-----------+----------------+-------+--------+----------------------------+
| 7 | wed | dwd | 123 | 44 | 2020-10-13 17:08:50.493488 |
| 1 | 三国演义 | 孙悟空大闹天宫 | 132 | 吴承恩 | 2020-09-13 14:48:30.000000 |
| 4 | 水浒传 | 逼上梁山 | 140 | 施耐庵 | 2020-09-13 12:48:30.962070 |
| 2 | 三国演义 1 | 东汉末年分三国 | 154 | 罗贯中 | 2020-09-13 12:48:30.962070 |
| 9 | 西游记 | 西天取经 | 345 | NULL | 2020-11-14 15:48:59.000000 |
+----+-----------+----------------+-------+--------+----------------------------+
5 rows in set (0.00 sec)
注:
1、上面 SQL 表示:查询表中所有数据(所有列、行),并对结果按"price"字段值进行分组
⑴分组:"price"字段值相同的为一组
⑵由于是单独使用的 GROUP BY 关键字,因此只会返回每个分组的第一条记录
1_1:有过滤条件时
mysql> SELECT id,title,price,author FROM polls_article WHERE price > 130;
+----+----------+-------+--------+
| id | title | price | author |
+----+----------+-------+--------+
| 1 | 三国演义 | 132 | 吴承恩 |
| 2 | 三国演义 | 154 | 罗贯中 |
| 3 | 水浒传 | 154 | 曹雪芹 |
| 4 | 水浒传 | 140 | 施耐庵 |
| 9 | 西游记 | 345 | NULL |
+----+----------+-------+--------+
5 rows in set (0.00 sec)
mysql> SELECT id,title,price,author FROM polls_article WHERE price > 130 GROUP BY title;
+----+----------+-------+--------+
| id | title | price | author |
+----+----------+-------+--------+
| 1 | 三国演义 | 132 | 吴承恩 |
| 3 | 水浒传 | 154 | 曹雪芹 |
| 9 | 西游记 | 345 | NULL |
+----+----------+-------+--------+
3 rows in set (0.00 sec)
注:
1、这个例子中的 SQL 示:查询表中"price > 130"的数据(查询的部分列)在对符合条件的
数据哪找"title"字段值进行分
⑴先找到符合过滤条件的数据,然后再分组
2、前面两个例子中:单独使 GROUP BY 关键字只显示每个分组的一条记
⑴这说明:GROUP BY 关键字单独使用时,只能查询出每个分组的一条记录
⑵这样做的意义不大。因此,一般在使用集合函数时才使 GROUP BY 关键字
GROUP BY 与聚合函数
1GROUP BY 键字通常与集合函数一起使用。集合函数包括 COUNT()函数SUM()函数
AVG()函数、MAX()函数和 MIN()函数
2、如果 GROUP BY 不与聚合函数一起使用,那么查询结果就是字段取值的分组情况
⑴字段中取值相同的记录为一组,但是只显示该组的第一条记(跟前面 GROUP BY 单独
使用一样)
3、常用的聚合函数有:
COUNT()函数:用于统计记录的条数
SUM()函数:用于计算字段的值的总和
AVG()函数:用于计算字段的值的平均值
MAX()函数:用于查询字段的最大值
MIN()函数:用于查询字段的最小值
2
mysql> SELECT * FROM polls_article;
+----+----------+----------------+-------+--------+----------------------------+
| id | title | content | price | author | create_time |
+----+----------+----------------+-------+--------+----------------------------+
| 1 | 三国演义 | 孙悟空大闹天宫 | 123 | 吴承恩 | 2020-09-13 14:48:30.000000 |
| 2 | 三国演义 | 东汉末年分三国 | 154 | 罗贯中 | 2020-09-13 12:48:30.962070 |
| 3 | 水浒传 | 刘姥姥进大观园 | 154 | 曹雪芹 | 2020-09-13 12:48:30.962070 |
| 4 | 水浒传 | 逼上梁山 | 140 | 施耐庵 | 2020-09-13 12:48:30.962070 |
| 7 | wed | dwd | 123 | 44 | 2020-10-13 17:08:50.493488 |
| 8 | ds | dwd | 123 | 32 | 2020-10-13 17:19:18.121264 |
| 9 | 西游记 | 西天取经 | 345 | NULL | 2020-11-14 15:48:59.000000 |
+----+----------+----------------+-------+--------+----------------------------+
of 12
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。