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的运行结果是一样的么?

解决方案 »

  1.   

    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写在谓词中, 这样出来的结果只有三条.
      

  2.   

    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 
    ----------------
    上面两条就一样了.
      

  3.   

    select * from a  left join b on a.a1 =b.b1 and b.b1 = 3这句是不是只和b.b1的进行左连接?