where,group by,having,order by执行顺序和编写顺序

  • Post author:
  • Post category:其他


【一】数据分组(group by ):

1.group by 和where

select 列a,聚合函数(聚合函数规范) from 表明 where 过滤条件 group by 列a

2.group by 和having

select 列a,聚合函数(聚合函数规范) from 表明 group by 列a  having 过滤条件 ;

3.group by 和order by

select 列a,聚合函数(聚合函数规范) from 表明 group by 列a  order by  条件;

【二】使用having字句对分组后的结果进行筛选,语法和where差不多:having 条件表达式

需要注意having和where的用法区别:

1.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。

2.where肯定在group by 之前,即也在having之前。

3.where后的条件表达式里不允许使用聚合函数,而having可以。

4.having后只能跟group by后边字段条件 或者 非group by字段的聚合函数条件(按组查询);

【三】当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序:

Group By 和 Having, Where ,Order by这些关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。

SELECT的语法顺序就是起执行顺序

FROM

WHERE (先过滤单表/视图/结果集,再JOIN)

GROUP BY

HAVING (WHERE过滤的是行,HAVING过滤的是组,所以在GROUP之后)

ORDER BY



版权声明:本文为The_Best_Hacker原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。