1. 程式人生 > >hive join on 條件 與 where 條件區別

hive join on 條件 與 where 條件區別

1.  select * from a left join b on a.id = b.id and a.dt=20181115;

2.  select * from a left join b on a.id = b.id and b.dt=20181115;

3. select * from a join b on a.id = b.id and a.dt=20181115;

4. select * from a left join b on a.id = b.id  where a.dt=20181115;

sql1: 如果是left join 在on上寫主表a的條件不會生效,全表掃描。
sql2: 如果是left join 在on上寫副表b的條件會生效,但是語義與寫到where 條件不同
sql3: 如果是inner join 在on上寫主表a、副表b的條件都會生效
sql4: 建議這麼寫,大家寫sql大部分的語義都是先過濾資料然後再join ,所以在不瞭解 join on + 條件的情況下,條件儘量別寫道on 後,直接寫到where厚就ok了。