它們沒有更多或更少有效,它們在功能上不同。
沒有濾波器,此連接中的所有記錄從主站到那些使用其中在附屬
select * from t1
left join t2 on t1.a = t2.c
匹配和過濾的子公司表,這個連接將等同於內連接
select * from t1
left join t2 on t1.a = t2.c
where t2.d=5
使用連接,並在子公司表過濾,這種過濾子公司表的記錄
select * from t1
left join t2 on t1.a = t2.c and t2.d=5
使用,其中,在主表篩選,該過濾器主表中的記錄使用join
select * from t1
left join t2 on t1.a = t2.c
where t1.b = 3
,這個過濾器在主記錄可以加入,但仍從主返回所有記錄。
select * from t1
left join t2 on t1.a = t2.c and t1.b = 3
所以給出如下表
表T1
a b
----------- -----------
1 2
1 3
2 4
3 3
表T2
c d
----------- -----------
1 9
4 5
2 5
結果
QUERY1
QUERY2
a b c d
----------- ----------- ----------- -----------
2 4 2 5
QUERY3
a b c d
----------- ----------- ----------- -----------
1 2 NULL NULL
1 3 NULL NULL
2 4 2 5
3 3 NULL NULL
query4
a b c d
----------- ----------- ----------- -----------
1 3 1 9
3 3 NULL NULL
QUERY5
a b c d
----------- ----------- ----------- -----------
1 2 NULL NULL
1 3 1 9
2 4 NULL NULL
3 3 NULL NULL
where條款中的條件 –
@Dot_NETJunior你簡直是錯誤的 – Alexander
@Alexander看我的答案我的意思是 –