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 请问这两个sql的运行结果是一样的么?
与
select * from a left join b on a.a1 =b.b1 where b.b1 = 3 请问这两个sql的运行结果是一样的么?
与
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
----------------
上面两条就一样了.