SQL查询语句执行的先后顺序
查询语句执行顺序
查询中⽤到的关键词主要包含六个,并且他们的顺序依次为select--from--where--group by-- having--order by。
其中select
和from
是必须的,其他关键词是可选的,这六个关键词的执⾏顺序与sql语句的书写顺序并不是⼀样的,而是按照下⾯的顺序来执⾏:
- from:需要从哪个数据表检索数据。
- where:过滤表中数据的条件。
- group by:如何将上⾯过滤出的数据分组 。
- having:对上⾯已经分组的数据进⾏过滤的条件。
- select:查看结果集中的哪个列,或列的计算结果。
- order by :按照什么样的顺序来查看返回的数据。
如果SQL中的from
有左连接,那left...on...and
条件和where
条件执行先后顺序是怎样的?
顺序是:先执行on...and
条件,后执行where
条件。
首先根据on...and
条件过滤出满足条件的右侧表记录,然后根据关联字段,左侧表再与过滤出的右侧表记录进行连接。
若满足关联字段相等,则返回左侧表和右侧表字段信息;
若不满足,则返回左侧表字段信息,右侧表字段则显示NULL
。
连接出的结果则存入临时表中。最后where
条件是对临时表中的数据进行过滤。
左连接Left join
,以左侧表为主,不管on
条件是否满足条件,左侧表的所有记录都会返回。
换句说:on...and
后面的条件对左侧表没有过滤作用,即使加上对左侧表的过滤,也不起作用。on
后面的条件对右侧表的过滤起作用。where
条件则对左连接后的临时表数据进行筛选。
以例子说明:
select * from A left join B on A.ID = B.ID and B.NAME = '连接' and A.NAME = '左连接' where A.NAME = '左连接'
on and
后面的条件:B.NAME
对B
表有过滤作用,A.NAME
对A
表不起过滤作用
where
后面的条件:则是对左连接出的临时表数据进行过滤。
本文来自博客园,作者:一纸年华,转载请注明原文链接:https://www.cnblogs.com/nullcodeworld/p/16540971.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?