Mysql关键词之 group by的使用

where -group by-having-order by-limit 

 总结借鉴 :https://blog.csdn.net/q1054261752/article/details/48156177

group by 把重复的行字段归纳为一个字段 如name有两个张三 即归为一个张三 即缩为一行数据

group by 字句总是跟在where 子句后面,但where 子句缺省时,跟在from 后面
简单来讲  配合计算使用 先分组再计算
单独使用 只显示每个分组的一条记录 意义不大 和集合函数配套使用最好
先将其分组完再看每个分组的总数或平均等
和group_concat(name)一起使用 分组完groupby sex;可以查询这个年龄段的所有人姓名
可以很好的把分组情况展示出来
加上having可以限制输出的结果 一般和聚合函数使用 比如查出年龄18的有几人 再用having
限定人数大于多少的显示
和with rollup一起使用 可以对聚合函数显示全部值 如下决定12的出现
eg: SELECT 性别,COUNT(性别) FROM 表 GROUP BY 性别 WITH ROLLUP;

性别   个数
男:     10
女:     2
         12
where是对表或视图查询限定

where 需在group by前面 先限定条件再分组 where age>18 group by name

 

 原表有10个人 但是先判断大于18的 所以刷掉了两个不符合的 再根据姓名分组

having 是分组后再限定条件 一般和聚合函数一起使用 什么最高最低平均 数量大于多少啦什么的   where group by having三个关键词也可一起使用

group by 和 orderby 在orderby前面使用 先分组再按顺序排列

 

 

 

limit 0/1    单数字0查询0条 1查询1条

limit 2,3    双数字 第一位代表2+1 从第三个id开始查询   第二位代表查询的总条数3条  大数据下第一位可用where id>2代替 提高查询效率 

limit 在范围查询下可以提高查询效率

比如登陆时确认用户名 如果在数据库中存在该用户名 找到对应的用户名停止检索 如不加limit会全盘检索再返回用户名

 

inner join 返回关联的条件

用on连接两表 如不写inner join用where连接两表

left join 返回左表全部条件 右表没有显示null right join 相反

 

posted @ 2019-09-05 14:47  阿甘的44大G  阅读(558)  评论(0)    收藏  举报