Mysql的书写顺序和执行顺序
一、书写顺序
select->distinct->from->join->on->where->group by->having->union->order by->limit
二、执行顺序
1、执行顺序
from -> on -> join -> where -> group by -> having -> count(聚合函数 avg、max、min、sum) -> select -> distinct -> union -> order by -> limit
2、执行步骤解释:
1、from: 获得数据的来源。
2、on: 获得数据的关联表,执行完后生成一个临时表t1,提供给下一步的操作使用。
3、join: 将join表的数据补充到on执行完成的临时表t1中。
4、where: 根据携带的条件,从临时表中筛选出符合条件的数据,并生成临时表t2。
5、groub by: 根据携带的条件,将临时表t2进行相应的数据分组,并形成临时表t3,如果语句包含了group by则它后面的字段必须出现在select中或者出现在聚合函数中,否则会报SQL语法错误。
6、having: 筛选分组后临时表t3的数据,得到临时表t4。
7、count等聚合函数: 对临时表进行指定字段的聚合函数操作,形成临时表t5。
8、select: 从临时表筛选出需要返回的数据,形成临时表t6。
9、distinct: 对临时表t6进行指定的去重筛选,形成临时表t7。
10、union: 对临时表t7进行组合,形成临时表t8。
11、order by: 对临时表t8排序,形成临时表t9。
12、limit: 筛选返回的数据条数。