1.舉個例子,就清楚了。兩個表tb_userstat_all,tb_userstat_imeiimsi_all
a
select * from tb_userstat_all as a left join tb_userstat_imeiimsi_all as b on a.sdate = b.sdate and b.sdate BETWEEN '20151222' and '20151225';
b
select * from tb_userstat_all as a left join tb_userstat_imeiimsi_all as b on a.sdate = b.sdate and a.sdate BETWEEN '20151222' and '20151225';
c
select * from tb_userstat_all as a left join tb_userstat_imeiimsi_all as b on a.sdate = b.sdate where a.sdate BETWEEN '20151222' and '20151225';
d
select * from tb_userstat_all as a left join tb_userstat_imeiimsi_all as b on a.sdate = b.sdate where b.sdate BETWEEN '20151222' and '20151225';
查詢結果是:
a:300條記錄
b:300條記錄
c:2條記錄
d:2條記錄
結論:
left join on後面的條件對主表不起作用。主表仍然會查詢出所有的記錄,但是 on 後面的條件 會對從表有影響。
where 後面跟的條件 是將連接查詢後的結果 進行篩選。
因此,根據需求靈活的運用 on 還是 where.