select * from a left join b on a.a1 =b.b1 and b.b1 = 3 与 select * from a left join b on a.a1 =b.b1 where b.b1 = 3 -------------------------------------------------------------- 不一样. 第一个出来的结果是以a为基表的左连接数据. 比如说, A有5条记录, 对应的符合条件的b表记录有3条的话, 最终结果会有5条.但第二个将过滤条件b.b1=3写在谓词中, 这样出来的结果只有三条.
select * from a left join b on a.a1 =b.b1 and b.b1 = 3 与 select * from a left join b on a.a1 =b.b1 where b.b1(+) = 3 ---------------- 上面两条就一样了.
select * from a left join b on a.a1 =b.b1 and b.b1 = 3这句是不是只和b.b1的进行左连接?
与
select * from a left join b on a.a1 =b.b1 where b.b1 = 3
--------------------------------------------------------------
不一样.
第一个出来的结果是以a为基表的左连接数据. 比如说, A有5条记录, 对应的符合条件的b表记录有3条的话, 最终结果会有5条.但第二个将过滤条件b.b1=3写在谓词中, 这样出来的结果只有三条.
与
select * from a left join b on a.a1 =b.b1 where b.b1(+) = 3
----------------
上面两条就一样了.