深入Oracle的left join中on和where的区别详解

2024-11-06 07:17:28
推荐回答(1个)
回答1:

可以简单的理解为 on 后面的条件是加在 left join 的表上的,where 后面的条件,是加在left join结果集上的

如果把对 left join表的字段条件(is null除外),从on挪到where,那么就和inner join没有区别了

例1:此枯链处的left join改成inner join是一样的,where的意思旦斗是B必须存在,且col2=1

select * from A
left join B on A.col1=B.col1
where 没迟孙B.col2=1

例2:以下两个的效果是一样的

select * from A
left join B on A.col1=B.col1 and B.col2=1
select * from A
left join B on A.col1=B.col1
where B.col1 is null or B.col2=1