left join on 直接带条件和加在where后边的区别
直接将条件加在On中表示用该条件来作为连接条件,那么既然是left join,当被连接的表中没有匹配记录时也会用Null来代替。而加在where中则会在左连接后,对结果按此条件进行过滤。
用两个同构表作测试:
create table testx/testy
(
name varchar(50) default '',
age int
)
insert into testx(name,age)values('arlen',20),('tommy',19);
insert into testy(name,age)values('arlen',20);
select * from testx left join testy on testx.name=testy.name and testx.age=20
结果:
arlen 20 arlen 20
arlen 20 null null
select * from testx left join testy on testx.name=testy.name where testx.age=20
结果:
arlen 20 arlen 20