hive各种join(leftouterjoin、join、fullouterjoin)_hivd left join_buster2014的博客-程序员秘密

技术标签: hive  hive相关问题  

文章来源:http://www.it165.net/database/html/201408/7812.html

一、概念

1、左连接 left outer join

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

2、连接join

找出左右相同同的记录

3、全连接 full outer join

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

二、实验

1、准备数据

 

01. create external table IF NOT EXISTS temp_testjoin_ta
02. (
03. label string,
04. qu string
05. )
06. partitioned by (dt string)
07. row format delimited fields terminated by ' '
08. stored as textfile;
09. 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 ' '
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

 

 

01. 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 ;
02. l1  q1  q1  i1
03. l1  q1  q1  i1
04. l1  q1  q1  i2
05. l1  q1  q1  i3
06. l1  q2  q2  i1
07. l1  q2  q2  i2
08.  
09.  
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

 

 

01. 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 ;
02. l1  q1  q1  i1
03. l1  q1  q1  i1
04. l1  q1  q1  i2
05. l1  q1  q1  i3
06. l1  q2  q2  i1
07. l1  q2  q2  i2
08.  
09. 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;
10. l1  i1
11. l1  i2
12. l1  i3

3、full outer join

 

01. 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  ;
02. l1  q1  q1  i1
03. l1  q1  q1  i1
04. l1  q1  q1  i2
05. l1  q1  q1  i3
06. l2  q1  q1  i1
07. l2  q1  q1  i1
08. l2  q1  q1  i2
09. l2  q1  q1  i3
10. l1  q123    NULL    NULL
11. l1  q2  q2  i1
12. l1  q2  q2  i2
13. NULL    NULL    q3  i10

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/buster2014/article/details/50143213

智能推荐

如何在Github上建立自己的个人博客网站详细教程_github建立自己的博客_m0_63984008的博客-程序员秘密

概述之前闲着没事,就利用Github建了一个个人博客网站,效果还不错,今天就来分享一下.建立自己个人博客网站的好处:1.面试装逼,这个不必多说…2.把平时积累的知识和项目记录下来,方便日后查看使用3.不受其他博客平台的限制准备工作开始之前,先大致介绍一下用到的技术和相关概念Github是什么:GitHub是一个利用Git进行版本控制、专门用于存放软件代码与内容的共享虚拟主机服务,很多人都把它称作程序员的同性交友网站,具体为啥这么叫我也不知道GitHub Pages是什么?

C++中.h文件与.cpp文件中该写什么?_铭记_的博客-程序员秘密

C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类的实现放在cpp文件中。它们为什么能够关联到一起呢?你知道什么东西可以放在.h文件中,什么不能。什么东西又可以放在cpp文件中。如果你忘记了或是压根就不明白,那么读过此文你会清晰无比!!        声明与定义        声明是将一个名称引入程序。定义提供了一个实体在程序中的唯一描述。声明和定义有时是同时存在

VUE+Ionic,项目搭建&打包成APK_weixin_30685029的博客-程序员秘密

安装Vue&创建Vue工程1.安装Vue CLI:npm install -g vue-cli2.创建新的Vue项目,创建最后一步会提醒是否使用npminstall自动安装,如果选择N,在第2步后,手动执行:npm installvue init webpack my-project或vue create my-project或vue in...

Linux 三周第一次课(4月2日)Linux,windows 互传文件 用户配置文件密码 组管理_weixin_34150830的博客-程序员秘密

三周第一次课(4月2日)2.27linux和windows互传文件3.1 用户配置文件和密码配置文件3.2 用户组管理3.3 用户管理Linux和windows文件互传我通常使用的是ftp或者是其他文件管理方式这里介绍一个办法,但是只能在xshell下使用, 安装 lrzsz工具包安装好了之后就可以使用sz命令 +要传输的文件如果是想从windows往linux传就可以使用 ...

分布式RPC框架Apache Dubbo_dxq11的博客-程序员秘密

Apache Dubbo1.Apache Dubbo概述1.1 Dubbo简介Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的、轻量级的开源Java RPC 框架,可以和Spring框架无缝集成,2018年阿里巴巴把这个框架捐献给了apache基金会什么是RPC?RPC全称为remote procedure call,即远程过程调用。比如两台服务器A和B,A服务器上部署一个应 用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由

js中的四舍五入,取整_js四舍五入取整_Demi 丫的博客-程序员秘密

主题:主要记录一下js中的一些Math函数Detail:1. 四舍五入:Math.round(1.23); // 12. 只取整数:Math.parseInt(1.23); // 13. 向上取整数:Math.floor(1.23); // 14. 向下取整:Math.ceil(1.23); // 25. 取绝对值:Math.abs(-1.23); //1.236. ...

随便推点

java类加载方式_java类加载的表现形式_郑娘子的博客-程序员秘密

java中的类是动态加载的,我们先看一下我们常用的类加载方式,先有一个感性的认识,才能进一步深入讨论,类加载无非就是下面三种方式。class A{}class B{}class C{}public class Loader{public static void main(String[] args) throws Exception{Class aa=A.class;Class bb=Class....

RVCT3.1安装及破解_qq_40468106的博客-程序员秘密

软件下载:https://pan.baidu.com/s/1HTY_eHXGLHcCM8q7dxYJWwupun安装总体流程:https://wenku.baidu.com/view/92ea35746edb6f1afe001f3b.html安装过程中遇到的问题:1.点击setup.exe报错  java.lang.RuntimeException: java.io.IOE...

linux -- 解决“ -bash: ifconfig:command not found “ 和 “ -bash: netstat:command not found “问题_凉风起天末、的博客-程序员秘密

一、原因没有安装网络工具。二、解决方法[[email protected] ~]# yum -y install net-tools本文出现任何错误,请留言批评指正。

什么是依赖注入与Ioc容器了_assasinSteven的博客-程序员秘密

背景在很多编程语言(例如java)开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,一旦有修改,牵扯的类会很多。最早在java的spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。目前许多主流PHP框架也使用了依赖注入...

Kotlin Array 创建、增、删、改、查、插入_MobMsg的博客-程序员秘密

示例代码import android.os.Bundleimport android.support.v7.app.AppCompatActivityimport kotlinx.android.synthetic.main.activity_test.*/** * Array 创建、增、删、改、查、插入 * @author lyl 20181228 * */cl...

重拾web开发-JavaScript复习_weixin_33875564的博客-程序员秘密

以下内容都是本人之前学习的一些笔记很多是摘自网上并非完全原创,特此申明。最简单的一句js:<html><body><script type="text/javascript">document.write("Hello World!");</script></body></html>...

推荐文章

热门文章

相关标签