oracle之group by,having和where的区别

我个人的理解如下:
group by,having已经where这三个子句的执行顺序是有区别的:
先执行where子句,对符合条件的数据进行删选
然后执行group by子句,对删选出来的结果集进行分组
最后执行having子句,对分组后的结果集再次进行筛选。

这样就很好理解为什么带有聚合函数 (sum,min,max,avg,count)的查询条件只能使用在having子句,而不能在where子句中,因为它违背了执行顺序。
必须在分组以后,计算出结果集,然后才能对相应的结果集进行进一步的筛选。

在oracle中,group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面。
但是在mysql中,是没有这样的限制的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28497416/viewspace-2128716/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28497416/viewspace-2128716/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值