千家信息网

MySQL left join操作中on和where放置条件的区别有哪些

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这篇文章给大家分享的是有关MySQL left join操作中on和where放置条件的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。优先级两者放置相同条件,之所
千家信息网最后更新 2024年11月26日MySQL left join操作中on和where放置条件的区别有哪些

这篇文章给大家分享的是有关MySQL left join操作中on和where放置条件的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

优先级

两者放置相同条件,之所以可能会导致结果集不同,就是因为优先级。on的优先级是高于where的。

首先明确两个概念:

  • LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

  • 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。

在left join下,两者的区别:

  • on是在生成临时表的时候使用的条件,不管on的条件是否起到作用,都会返回左表 (table_name1) 的行。

  • where则是在生成临时表之后使用的条件,此时已经不管是否使用了left join了,只要条件不为真的行,全部过滤掉。

测试

表1:table1

idNo
1n1
2n2
3n3

表2:table2

Noname
n1aaa
n2bbb
n3ccc
select a.id,a.No,b.name from table1 a left join table2 b on (a.No = b.No and b.name='aaa');select a.id,a.No,b.name from table1 a left join table2 b on (a.No = b.No) where b.name='aaa';

第一个结果集:

|id |No |name||---|---|---||1 |n1 |aaa||2 |n2 |(Null)||3 |n3 |(Null)|

第二个结果集:

|id |No |name||---|---|---||1 |n1 |aaa|

第一个sql的执行流程:首先找到b表的name为aaa的记录行(on (a.No = b.No and b.name='aaa') )。然后找到a的数据(即使不符合b表的规则),生成临时表返回用户。

第二个sql的执行流程:首先生成临时表,然后执行where过滤b.name='aaa'不为真的结果集,最后返回给用户。

因为on会首先过滤掉不符合条件的行,然后才会进行其它运算,所以按理说on是最快的。

在多表查询时,on比where更早起作用。系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where进行过滤,然后再计算,计算完后再由having进行过滤。由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定放在那里。

对于JOIN参与的表的关联操作,如果需要不满足连接条件的行也在我们的查询范围内的话,我们就必需把连接条件放在ON后面,而不能放在WHERE后面,如果我们把连接条件放在了WHERE后面,那么所有的LEFT,RIGHT,等这些操作将不起任何作用,对于这种情况,它的效果就完全等同于INNER连接。对于那些不影响选择行的条件,放在ON或者WHERE后面就可以。

记住:所有的连接条件都必需要放在ON后面,不然前面的所有LEFT,和RIGHT关联将作为摆设,而不起任何作用。

感谢各位的阅读!关于"MySQL left join操作中on和where放置条件的区别有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

条件 作用 生成 结果 优先级 用户 内容 数据 时候 是在 更多 流程 篇文章 关联 查询 不同 不错 实用 最快 相同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 申请书软件开发范文模板 关于孩子网络安全的读后感 建立数据库从哪儿得到资源 PS软件开发费用 和网络安全相结合的成语故事 南城软件开发有限公司 程序员软件开发培训班 戴尔s45服务器开机选择按哪个 阿里云免费服务器防护 5g网络技术及应用场景 同煤集团积极应用网络技术 空间数据库是新一代吗 栅格数据和影像数据库 互联网科技公司合作合同 计算机网络技术专业课程说明 中国科技大学互联网创业 民航气象数据库飞行安全 计算机网络技术考试方面 网络技术服务联系方式 大话西游手游 服务器 班尼路服务器价格 校园网络安全方案课程设计 15年10月软件开发工具 国际服务器出货量 软件开发公司的分类 违法网络安全法怎么取证 海洋药物小分子数据库 广州天拓互联网产业园科技发展 赤峰短期云计算网络安全培训 江陵白马服务器能不能下
0