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了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM