微信公众号:路人zhang
网站救助计划

1.为阅读体验,本站无任何广告,也无任何盈利方法,站长一直在用爱发电,现濒临倒闭,希望有能力的同学能帮忙分担服务器成本


2.捐助10元及以上同学,可添加站长微信lurenzhang888,备注捐助网站倒闭后可联系站长领取本站pdf内容


3.若网站能存活下来,后续将会持续更新内容

当前位置: 计算机基础 > 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表中的结果进行排序。

本站链接:https://www.mianshi.online如需勘误或投稿,请联系微信:lurenzhang888


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