sql join 和 where 有什么区别

分类:编程技术 时间:2024-02-20 15:15 浏览:0 评论:0
0
小编跟大家分享一下SQL join和where的区别。相信大多数人对此还不是很了解,所以分享这篇文章供大家参考。希望您读完这篇文章后能有所收获。让我们一起来了解一下吧!

join关键字的作用是将多个表按照一定的条件连接起来,从而可以从多个表中获取数据。

推荐课程:MySQL教程。

加入后可以遵循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.这里以左连接为例。首先运行where添加条件-when t2.age ='22'

SELECT * from id_name t1 LEFT JOIN id_age t2 on t1.id = t2.id where t2.age =' 22'

结果如下

左连接操作完成后过滤条件即可得到where条件

< p>2。运行时添加条件 - t2.age ='22'

SELECT * from id_name t1 LEFT JOIN id_age t2 on t1.id = t2.id and t2.age =' 22'

结果如下

通过对left join之前的条件进行过滤,然后将两张表进行join即可得到on条件

这里使用的是left join,例如inner join,由于其性质,两个条件得到的结果会是一样的,但是内部的流程还是不一样的

工作上早于where,首先根据on条件执行多表连接操作,生成一个临时表,然后按where过滤

哪个效率更高,on还是where?

如果是inner Join,则放在and where将产生相同的结果,但没有说哪个更高效、更快?如果有外连接(左或右),就会有区别,因为on先生效,并且提前过滤了一部分数据,where稍后生效。

To总结一下,感觉放在on上效率更高,因为是在where之前执行的。
先笛卡尔积,然后再过滤,如果join是inner,就继续往下走。如果join是左连接,则将on过滤掉的左主表中的数据加回;然后在where中进行过滤;

on不是最终的过滤,因为后面可能会加回left join,而where才是最终的过滤。

仅当使用outer join时(左、右),on 和 where 之间存在差异。如果使用内连接,则在公式中到处都是一样的,因为on后面跟着where,中间没有其他步骤。

以上就是SQL join和where的区别。感谢您的阅读!相信大家都有一定的了解,希望分享的内容对大家有所帮助。如果您想了解更多知识,请关注行业资讯频道!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > sql join 和 where 有什么区别

用户评论