SELECT * from #a left join #b on #a.pid=#b.id 
and #b.k='a'
************************
这里是LEFT JOIN 表示右边的表(这里是b)在和左边的表(a)join时候,如果满足约束的条件,或者b表中id为null的话,结果都会包含的。
所以第一个查询的结果为:
1 1 1 a
2 1 1 a
3 1 1 a
4 2 NULL NULL
5 2 NULL  NULL
这里虽然下面两行不能满足 #b.k='a' 但是,由于LEFT JOIN的特性,要求左边的表是被完全包含的,所以即使b是不满足的,还是会包含,只不过不满足条件的列会被null代替。*******************************
而这个:
SELECT * from #a left join #b on #a.pid=#b.id where #b.k='a'
则是先是在on约束下得到了join的结果:
其实就是(SELECT * from #a left join #b on #a.pid=#b.id)
1 1 1 a
2 1 1 a
3 1 1 a
4 2 2 b
5 2 2 b
然后再判断where子句的,得到:1 1 1 a
2 1 1 a
3 1 1 a