问题:对于满足SQL92标准的SQL语句:select foo,count(foo)from pokes where foo>10group by foo having count (*)>5 order by foo
其执行顺序应该是?
答案FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY
分析
有FROM、WHERE、GROUP BY、HAVING、聚合函数的语句,
1、先执行where子句查找符合条件的数据;
2、使用group by 子句对数据进行分组;
3、对group by 子句形成的组运行聚集函数计算每一组的值
4、最后用having 子句去掉不符合条件的组。
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据;
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据。
ps:
ORDER BY 与 LIMIT 的执行顺序:ORDER BY > LIMIT
ORDER BY 与 LIMIT 的编写顺序:ORDER BY > LIMIT