本文整理自网络,侵删。
目录
- 1、前言
- 2、准备user表
- 2.1 group by规则
- 2.2 group by使用
- 2.3 having使用
- 2.4 order by与limit
- 2.5 with rollup
1、前言
MySQL
的group by
用于对查询的数据进行分组;此外MySQL
提供having
子句对分组内的数据进行过滤。
MySQL
提供了许多select
子句关键字,
它们在语句中的顺序如下所示:
子句 | 作用 | 是否必须/何时使用 |
---|---|---|
select | 查询要返回的数据或者表达式 | 是 |
from | 指定查询的表 | 否 |
where | 指定行级过滤 | 否 |
group by | 分组 | 否/对数据分组时使用 |
having | 分组过滤 | 否/对分组后的数据过滤使用 |
order by | 返回数据时指定排序规则 | 否 |
limit | 指定返回数据的行数 | 否 |
2、准备user表
准备一张user表,其DDL和表数据如下所示
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名', `nation` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '民族', `age` int(11) NULL DEFAULT NULL COMMENT '年龄', `height` double NULL DEFAULT NULL COMMENT '身高', `sex` smallint(6) NULL DEFAULT NULL COMMENT '性别', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES (1, '李子捌', '汉族', 18, 180, 1); INSERT INTO `user` VALUES (2, '张三', '回族', 20, 175, 1); INSERT INTO `user` VALUES (3, '李四', '维吾尔族', 45, 168, 0); INSERT INTO `user` VALUES (4, '王五', '蒙古族', 18, 177, 1); INSERT INTO `user` VALUES (5, '赵六', '汉族', 16, 184, 0); INSERT INTO `user` VALUES (6, '田七', '维吾尔族', 27, 192, 1);
user表中数据如下所示:
mysql> select * from user; +----+--------+----------+------+--------+------+ | id | name | nation | age | height | sex | +----+--------+----------+------+--------+------+ | 1 | 李子捌 | 汉族 | 18 | 180 | 1 | | 2 | 张三 | 回族 | 20 | 175 | 1 | | 3 | 李四 | 维吾尔族 | 45 | 168 | 0 | | 4 | 王五 | 蒙古族 | 18 | 177 | 1 | | 5 | 赵六 | 汉族 | 16 | 184 | 0 | | 6 | 田七 | 维吾尔族 | 27 | 192 | 1 | +----+--------+----------+------+--------+------+ 6 rows in set (0.00 sec)
2.1 group by规则
使用group by
之前需要先了解group by
使用的相关规则
group by
子句置于where
之后,order by
子句之前having
子句置于group by 之后,order by子句之前group by
子句中的每个列都必须是select的检索列或者有效表达式,不能使用聚集函数select
中使用的表达式,在group by子句中必须出现,并且不能使用别名group by
分组的数据中包含null值,null值被分为一组group by
子句可以嵌套,嵌套的分组在最后分组上汇总
2.2 group by使用
需求:
统计不同民族的用户数
相关阅读 >>
更多相关阅读请进入《mysql》频道 >>

数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » 浅谈MySQL中的group by
标签:mysql
相关推荐
评论
管理员已关闭评论功能...
- 欢迎访问木庄网络博客
- 可复制:代码框内的文字。
- 方法:Ctrl+C。