left join on and 和 inner join on and的多条件查询区别

本文探讨了在SQL中,left join与inner join在处理多条件查询时的不同行为。left join始终返回左表所有记录,即使条件不符;而inner join只取两表交集。理解并根据需求选择合适的方法,例如将复杂条件置于where子句。
摘要由CSDN通过智能技术生成

我们都知道 left join 是以左表为基准和其他表进行连接, 返回左表的记录。

而inner join是两张表的交集的记录。

但是当多条件查询时,会怎样呢?先做个测试:

person1表的记录:

person2表的记录:

先看下left join:

可以看到结果  ,即使在and后面加了过滤条件,依然会返回名称是 小丽 的数据。这是因为左连接是以左边表为基准,无论on后面的条件如何,都会返回左表,然后再根据条件来返回右表。 所以当前例子查询不是小丽的时候,返回了左表数据,但是无法连接右表数据,因为 不存在这个条件的数据,所以右表数据是空。

 

再看下内连接

可以看到数据不存在名称是小丽的数据了,因为内连接是根据两张表的交集来查询的,所以需要判断on后面的条件。

 

所以在连接多条件查询时,需要根据需求选择合适的多条件连接查询,如果想用left join 多条件,可以放到where后面,因为where会根据join 后的数据再进行过滤。 

如:

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值