SQL执行顺序&自关联查询&子查询
一、SQL的执行顺序
select [distinct] 字段列表,聚合函数 from 表1 left join 表2 on 表1.外键 = 表2.主键 [where条件查询] [group by 分组字段] [having 聚合过滤] [order by 排序] [limit 限制查询];
1、having聚合过滤
聚合过滤:针对聚合过后的结果,再次过滤
场合:1、筛选出平均成绩 大于 80的班级!2、筛选出 顾客数 大于2人的职员!
SELECT e.`name`,count(c.id)FROM employees AS e LEFT JOIN employee_customer AS ec ON ec.fk_emp_id = e.id LEFT JOIN customers AS c ON ec.fk_cus_id = c.id group by e.`name` having count(c.id) >= 2;
或:
SELECT class_name, avg( score ) FROM stu_score GROUP BY class_name HAVING avg( score ) >= 90;
2、自关联查询
前面的关联: