本帖最后由 geniuswjt 于 2011-11-18 14:37:48 编辑

解决方案 »

  1.   

    select * from [tba] a left join [tbb] b on (a.col1=b.col1 and b.col2='a')--相当于select * from [tba] a left join (select * from [tbb] where b.col2='a') b on a.col1=b.col1
      

  2.   

    select * from [tba] a left join [tbb] b on (a.col1=b.col1) where b.col2='a'這樣等同於inner join ,因where有別名b的條件,沒去null
      

  3.   

    不是炫耀贴,是帖。
    刚才迷迷糊糊写了个比较长的left语句,结果出来的条数怎么看都是inner join的结果
    排查了半天才发现
    是1楼和3楼的意思。下次要小心了。
      

  4.   


    语句执行顺序,where在on之后,where 对on之后的结果集进行了筛选,所以结果不一样。。
    ---我这样理解对吗?
      

  5.   

    嗯,如果col2在左表而不在右表的话这两条的结果就一样了,但是顺序当然还是对的