我们都知道 left join 是以左表为基准和其他表进行连接, 返回左表的记录。
而inner join是两张表的交集的记录。
但是当多条件查询时,会怎样呢?先做个测试:
person1表的记录:
person2表的记录:
先看下left join:
可以看到结果 ,即使在and后面加了过滤条件,依然会返回名称是 小丽 的数据。这是因为左连接是以左边表为基准,无论on后面的条件如何,都会返回左表,然后再根据条件来返回右表。 所以当前例子查询不是小丽的时候,返回了左表数据,但是无法连接右表数据,因为 不存在这个条件的数据,所以右表数据是空。
再看下内连接
可以看到数据不存在名称是小丽的数据了,因为内连接是根据两张表的交集来查询的,所以需要判断on后面的条件。
所以在连接多条件查询时,需要根据需求选择合适的多条件连接查询,如果想用left join 多条件,可以放到where后面,因为where会根据join 后的数据再进行过滤。
如: