常见的数据查询
mysql中常见的数据查询
1)group by子句
2)回溯统计
3)分组排序
4)having子句
5)order by子句
1、group by子句
group by子句:分组统计,根据某个字段将所有的结果分类,并进行树统计分析
group by分组的特点
1)分组的目的不是为了显示数据,一定是为了统计数据
2)group by子句一定出现在where子句之后(如果同时存在)
3)分组统计可以进行统计细分:先分大组,然后大组分小组
分组统计需要使用统计函数
1)group_concat():将组里的某个字段全部保留
2)any_value():不属于分子字段的任意一个组里的值
3)count():求对应分组的记录数量
count(字段名):统计某个字段值的数量(NULL不做统计)
count(*):统计整个记录的数量(较多)
4)sum():求对应分组中某个字段的和
5)max()/min():求对应分组中某个字段的 最大/最小值
6)avg():求对应分组中某个字段的平均值
2、回溯统计
回溯统计:在进行分组时(通常说多分组),每一次结果的回溯都进行一次汇总统计
基本语法:在进行之后使用with rollup
3、分组排序
分组排序:在分组统计结果时可以根据分组字段进行升序或降序显示数据
分组排序的特点
默认的系统会自动对分组结果根据分组字段进行升序排序
可以设定分组结果的排序方式:
group by 字段名 [ASC]:升序排序(默认)
group by 字段名 [DESC]:降序排序
注意:分组排序是针对分组的结果,通过分组字段进行排序
4、having子句
having子句:类似于where子句,是用来进行条件筛选的
having子句的特点
having子句本身是针对分组统计结果进行筛选的
having子句必须出现在group by子句之后(如果同时存在)
having针对的数据是在内存里已经加载的数据
having几乎能够做where能做的所有事情,但where却却不一定
字段别名(where针对磁盘数据,那时还没有)
统计结果(where在group by 之前)
分组统计函数(having通常针对group by 存在的)
注意:能用where的地方不用having
5、order by子句
order by子句:排序,根据某个指定的字段进行升序或者降序
ordr by子句的特点
order by子句在having子句之后
排序分为升序和降序:默认是升序
order by 字段 [ASC]:升序
order by 字段 [DESC]:降序
注意:排序是针对前面所得到的结果进行排序(已经进入到内存的数据)
多个字段排序是在第一个字段排好序的情况下,不改变原来排序的基调后,再进行排序
5、limit子句
limit子句:限制数据的获取数量(记录数)
limit子句的特点
limit子句必须在order by 子句之后(如果同时存在)
limit限制数量的方式有两种
limit 数量:限制获取的数量(不保证一定能获取都指定数量)
limit 起始位置,数量:限制数据获取的位置及数量(分页)
注意:limit限制数量可以有效的减少服务器的压力和传输压力,常利用limit来实现分页获取数据
标签:group,常见,查询,分组,子句,limit,排序,数据,having
From: https://www.cnblogs.com/lil4257/p/16909099.html