SQL中join操作后⾯的on与where的区别多表left join
join关键字的作⽤是将多个表按⼀定的条件联合起来,从⽽可以实现从多个表中获取数据
在join后⾯可以接on条件和where条件,在这⾥我主要就是说这两者之间的差别
建⽴两张简单的⽤来测试的表并添加数据,如下所⽰,⼀张表名为id_name,另⼀张表名为id_age
⾸先看看不添加条件——t2.age ='22'时的结果
SELECT * from id_name t1 LEFT JOIN id_age t2 on t1.id = t2.id
得到
1、在这⾥以left join为例,⾸先运⾏where加条件——t2.age ='22'时
SELECT * from id_name t1 LEFT JOIN id_age t2 on t1.id = t2.id where t2.age ='22'
得到结果如下
可以得到where条件是在left join操作完成后所进⾏的条件筛选
2、当运⾏on加条件——t2.age ='22'时
SELECT * from id_name t1 LEFT JOIN id_age t2 on t1.id = t2.id and t2.age ='22'
得到结果如下
可得到on条件是在left join之前先进⾏条件筛选,⽽后才对两个表格join操作
在这⾥是以left join为例,对于inner join来说由于其性质,这两种条件得到的结果会是⼀样,但中间内部过程还是有差异的on⽐where起作⽤更早,,先根据on条件进⾏多表的连接操作,⽣成⼀个临时表再通过where来筛选
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论