问题:对于满足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