Oracle中group by和having和where之间的细微之处

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最近的,如:

select--》from--》where--》group by--》having--》order by

注:

from:需要从哪个数据表检索数据  
where:过滤表中数据的条件 
group by:如何将上面过滤出的数据分组 
having:对上面已经分组的数据进行过滤的条件  
select:查看结果集中的哪个列,或列的计算结果 
order by :按照什么样的顺序来查看返回的数据 

总结:

from后面的表关联,是自右向左解析的
而where条件的解析顺序是自下而上的。
也就是说,在写SQL语句的时候,尽量把数据量大的表放在最右边来进行关联,
而把能筛选出大量数据的条件放在where语句的最下面

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉梦洛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值