hive各种join

来源:网络收集 作者:网友

一、概念

1、左连接 left outer join

以左边表为准,逐条去右边表找相同字段,如果有多条会依次列出

2、连接join

找出左右相同同的记录

3、全连接 full outer  join

包括两个表的join结果,左边在右边中没找到的结果(NULL),右边在左边没找到的结果


二、实验

1、准备数据


  1. create external table IF NOT EXISTS temp_testjoin_ta  

  2. (  

  3. label string,  

  4. qu string  

  5. )  

  6. partitioned by (dt string)  

  7. row format delimited fields terminated by '\t'  

  8. stored as textfile;  

  9. ALTER TABLE temp_testjoin_ta ADD IF NOT EXISTS PARTITION (dt = '2014-08-08') location '/temp/jinlong10/testjoin/ta';  

  10.   

  11. l1  q1  

  12. l1  q2  

  13.   

  14.   

  15. create external table IF NOT EXISTS temp_testjoin_tb  

  16. (  

  17. qu string,  

  18. inmyway string  

  19. )  

  20. partitioned by (dt string)  

  21. row format delimited fields terminated by '\t'  

  22. stored as textfile;  

  23. ALTER TABLE temp_testjoin_tb ADD IF NOT EXISTS PARTITION (dt = '2014-08-08') location '/temp/jinlong10/testjoin/tb/';  

  24.   

  25. q1  i1  

  26. q1  i1  

  27. q1  i2  

  28. q1  i3  

  29. q2  i1  

  30. q2  i2  

  31. q3  i10  


2、join


  1. select * from (select label,qu from temp_testjoin_ta where dt = '2014-08-08') ta join (select qu,inmyway from temp_testjoin_tb where dt = '2014-08-08') tb on ta.qu = tb.qu ;  

  2. l1  q1  q1  i1  

  3. l1  q1  q1  i1  

  4. l1  q1  q1  i2  

  5. l1  q1  q1  i3  

  6. l1  q2  q2  i1  

  7. l1  q2  q2  i2  

  8.   

  9.   

  10. select * from (select label,qu from temp_testjoin_ta where dt = '2014-08-08') ta join (select qu,inmyway from temp_testjoin_tb where dt = '2014-08-08') tb on ta.qu = tb.qu group by label,inmyway;  

  11. l1  i1  

  12. l1  i2  

  13. l1  i3  


3、left outer join


select * from (select label,qu from temp_testjoin_ta where dt = '2014-08-08') ta left outer join (select qu,inmyway from temp_testjoin_tb where dt = '2014-08-08') tb on ta.qu = tb.qu ;  

l1  q1  q1  i1  

l1  q1  q1  i1  

l1  q1  q1  i2  

l1  q1  q1  i3  

l1  q2  q2  i1  

l1  q2  q2  i2  

  

select * from (select label,qu from temp_testjoin_ta where dt = '2014-08-08') ta left outer join (select qu,inmyway from temp_testjoin_tb where dt = '2014-08-08') tb on ta.qu = tb.qu group by label,inmyway;   

l1  i1  

l1  i2  

l1  i3  



3、full outer  join

select *  from (select label,qu from temp_testjoin_ta where dt = '2014-08-08') ta  full outer  join (select qu,inmyway from temp_testjoin_tb  where dt = '2014-08-08') tb on ta.qu = tb.qu  ;   

l1  q1  q1  i1  

l1  q1  q1  i1  

l1  q1  q1  i2  

l1  q1  q1  i3  

l2  q1  q1  i1  

l2  q1  q1  i1  

l2  q1  q1  i2  

l2  q1  q1  i3  

l1  q123    NULL    NULL  

l1  q2  q2  i1  

l1  q2  q2  i2  

NULL    NULL    q3  i10  


相关文档推荐

新零售行业Agent解决方案.PDF

1742957777  6.72MB 34页 积分5

B2B市场人DeepSeekAI提示词手册.PDF

1742949832  2.93MB 26页 积分6

AIGC如何助力工作和学习.PDF

1742949482 尹健 10.53MB 93页 积分8

DeepSeek政务应用场景与解决方案.PDF

1742949439  3.03MB 34页 积分6

2025年央国企信创数字化研究报告.PDF

1742809441  4.72MB 55页 积分5

2024年中国营销行业AI应用发展研究报告.PDF

1742803952  2.8MB 29页 积分4

AI落地应用最新工具集.PDF

1742450890  1.7MB 8页 积分4

DeepSeek完全实用手册.PDF

1742450791  3.62MB 114页 积分10

离散制造破局之道主数据管理平台重构.PDF

1742450737 詹慧超 4.6MB 37页 积分6

DeepSeek提示词设计、幻觉避免与应用.PDF

1742351308 程希冀 2.5MB 47页 积分6

相关文章推荐