介绍
mysql语句的书写顺序和执行顺序有很大差异。
1. 书写顺序
select
distinct <select_list>
from <left_table>
<join_type> join <right_table> on <join_condition>
where
<where_condition>
group by <group_by_column>
having <having_condition>
order by <oder_by_column>
limit <limit_number>
union <sql_script_2>
……
2. 执行顺序
- from <left_table> 对from后面的表进行笛卡尔积(选择相对小的表做基础表)
- on <join_condition> 筛选出满足on逻辑表达式的行
- <join_type> join <right_table>
- where <where_condition> where条件在on之后执行,从左到右,从上到下
- group by <group_by_column> 分组聚合(count、sum、avg等)
- having <having_condition> 根据聚合函数进行再次过滤
- select <select_list> 筛选需要查询的列数据
- distinct 对数据进行去重
- union 在order by之前执行
- order by 排序
- limit 获取用户指定返回的数量
希望此篇文章能帮大家对mysql执行顺序有一个了解,感谢大家阅读