旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

sql的join和where区分【MySQL教程】,mysql

作者:搜教程发布时间:2019-12-01分类:MySQL教程浏览:52评论:0


导读:join关键字的作用是将多个表按肯定的前提联合起来,从而能够实现从多个表中猎取数据。引荐课程:MySQL教程。在join背面能够接on前提和where前提,在这里我重要...

join关键字的作用是将多个表按肯定的前提联合起来,从而能够实现从多个表中猎取数据。

引荐课程:MySQL教程。

在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来挑选

那 on 和where 谁人更高效呢

假如是inner join, 放on和放where发生的效果一样, 但没说哪一个效力速率更高? 假如有outer join (left or right), 就有区分了, 由于on见效在先, 已提早过滤了一部分数据, 而where见效在后.

综合一下, 觉得照样放在on里更有效力, 由于它先于where实行.
先笛卡尔积, 然后再on过滤, 假如join是inner的, 就继承往下走, 假如join 是left join, 就把on过滤掉的左主表中的数据再增加返来; 然后再实行where里的过滤;

on中不是终究过滤, 由于背面left join还能够增加返来, 而where才是终究过滤.

只有当运用外衔接(left, right)时, on 和 where 才有这个区分, 假如用inner join, 在那里制建都一样, 由于on 以后就是where, 中心没有别的步骤.

以上就是sql的join和where区分的细致内容,更多请关注ki4网别的相干文章!

标签:mysql


欢迎 发表评论: