- 执行where xxx对全表数据做筛选,返回第1个结果集;
- 针对第1个结果集中使用group by分组,返回第2个结果集;
- 针对第2个结果集中的每1组数据执行select xx,有几组就执行几次,返回第3个结果集;
- 针对第3个结果集执行having xx进行筛选,返回第4个结果集
- 针对第4个结果集排序
SQL语句使用group by时注意事项
1、group by 语句用来与聚合函数(COUNT、SUM、AVG、MIN、MAX)联合使用得到一个列或多个列
2、having 只能在group by之后(即使用having的前提条件是分组)
3、如果过使用where和having,那么where在前
4、当一个语句同时出现where、group by、having、order by的时候,执行顺序和编写顺序是:
from --> where --> [ result1 ] --> group by --> [ result2 ] --> select () --> [ result3 ] --> having --> [ result4 ] --> order by --> output