版权声明:版权所有,违者必究 https://blog.csdn.net/weixin_39921821/article/details/86621845
1.group by
首先单纯的就group by 来说吧,分组函数,它一般是和聚合函数配合使用的,但是它有一个重要的原则需要你记住就是==》在查询时select 和from之间=用到的所有列(字段)中,没有使用聚合函数的列,必须出现在 group by 后面,如下:
错误写法:
select 字段1,字段2 from table group by 字段1
正确写法:
select 字段1,count(字段2) as 统计字段2的数量 from table group by 字段2
2. having
首先它一般是和group by 搭配使用的,放在group by 后面,作为过滤条件使用,用来显示特定的组,也可以使用多个分组标准进行分组
注,在这个地方,having子句有所限制,要在SELECT语句中定义的列和聚合表达式上。
如下:
select 字段1 count(字段2) from table group by a having count(字段2)>2
3.where
首先在执行顺序上,它是仅排在from最近的,如:
扫描二维码关注公众号,回复:
5260822 查看本文章
select--》from--》where--》group by--》having--》order by
注:
from:需要从哪个数据表检索数据
where:过滤表中数据的条件
group by:如何将上面过滤出的数据分组
having:对上面已经分组的数据进行过滤的条件
select:查看结果集中的哪个列,或列的计算结果
order by :按照什么样的顺序来查看返回的数据
总结:
from后面的表关联,是自右向左解析的
而where条件的解析顺序是自下而上的。
也就是说,在写SQL语句的时候,尽量把数据量大的表放在最右边来进行关联,
而把能筛选出大量数据的条件放在where语句的最下面