mysql关键字的执行顺序
2021-04-20 16:58:43 0 举报
mysql关键字的执行顺序
作者其他创作
大纲/内容
from -> on -> join -> where -> group by -> having -> select -> distinct -> union -> order by -> limit
HAVING:对分组后的数据进行筛选,生成VT6
1
DISTINCT:对VT6进行去重,生成VT7
9
首先from确定驱动表两表生成笛卡尔积(用的是左连接,所以左表是驱动表)
LIMIT:取出指定的行记录,生成VT10,返回结果。
10
id
name
age
class_id
id(1)
class_name
peile
19
一班
2
zhong
3
bin
23
4
zpl
16
ORDER BY:根据某个字段排序,生成VT9
student表
6
二班
三班
5
7
虚拟表VT3
虚拟表VT10
UNION:生成VT8
虚拟表VT2
null
虚拟表VT9
虚拟表VT6
SQL按照顺序从左往右执行,每一步都会生成一个虚拟表,最后的虚拟表就是最后结果。
虚拟表VT5
WHERE:对join之后的虚拟表再进行筛选,满足条件的留下,生成VT4
GROUP BY:对VT4里面的数据根据某个字段进行分组,生成VT5
做完了才发现不可能插入student.class_id = 4的这种情况,大家知道流程就行了
虚拟表VT4
class表
ON:对VT1进行筛选,生成VT2
JOIN添加驱动表中未匹配的数据,添加的行被驱动表数据为空,生成VT3
虚拟表VT1
8
0 条评论
回复 删除
下一页