扫码关注微信公众号

回复“面试手册”,获取本站PDF版

回复“简历”,获取高质量简历模板

回复“加群”,加入程序员交流群

回复“电子书”,获取程序员类电子书

当前位置: 计算机基础 > MySQL高频面试题 > 47.SQL语句执行顺序?
SELECT DISTINCT 
	select_list 
FROM 
	left_table 
LEFT JOIN 
	right_table ON join_condition 
WHERE 
	where_condition 
GROUP BY 
	group_by_list 
HAVING 
	having_condition 
ORDER BY 
	order_by_condition

执行顺序如下:

SQL语句执行顺序
SQL语句执行顺序
  • FROM:对SQL语句执行查询时,首先对关键字两边的表以笛卡尔积的形式执行连接,并产生一个虚表V1。虚表就是视图,数据会来自多张表的执行结果。
  • ON:对FROM连接的结果进行ON过滤,并创建虚表V2
  • JOIN:将ON过滤后的左表添加进来,并创建新的虚拟表V3
  • WHERE:对虚拟表V3进行WHERE筛选,创建虚拟表V4
  • GROUP BY:对V4中的记录进行分组操作,创建虚拟表V5
  • HAVING:对V5进行过滤,创建虚拟表V6
  • SELECT:将V6中的结果按照SELECT进行筛选,创建虚拟表V7
  • DISTINCT:对V7表中的结果进行去重操作,创建虚拟表V8,如果使用了GROUP BY子句则无需使用DISTINCT,因为分组的时候是将列中唯一的值分成一组,并且每组只返回一行记录,所以所有的记录都h是不同的。
  • ORDER BY:对V8表中的结果进行排序。

点击面试手册,获取本站面试手册PDF完整版