ITPub博客

首页 > 数据库 > Oracle > oracle之group by,having和where的区别

oracle之group by,having和where的区别

原创 Oracle 作者:花花蘑菇 时间:2016-11-18 18:36:44 0 删除 编辑
我个人的理解如下:
group by,having已经where这三个子句的执行顺序是有区别的:
先执行where子句,对符合条件的数据进行删选
然后执行group by子句,对删选出来的结果集进行分组
最后执行having子句,对分组后的结果集再次进行筛选。

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

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

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

请登录后发表评论 登录
全部评论

注册时间:2016-08-09

  • 博文量
    41
  • 访问量
    86929