文章来源: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
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
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
概述之前闲着没事,就利用Github建了一个个人博客网站,效果还不错,今天就来分享一下.建立自己个人博客网站的好处:1.面试装逼,这个不必多说…2.把平时积累的知识和项目记录下来,方便日后查看使用3.不受其他博客平台的限制准备工作开始之前,先大致介绍一下用到的技术和相关概念Github是什么:GitHub是一个利用Git进行版本控制、专门用于存放软件代码与内容的共享虚拟主机服务,很多人都把它称作程序员的同性交友网站,具体为啥这么叫我也不知道GitHub Pages是什么?
C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类的实现放在cpp文件中。它们为什么能够关联到一起呢?你知道什么东西可以放在.h文件中,什么不能。什么东西又可以放在cpp文件中。如果你忘记了或是压根就不明白,那么读过此文你会清晰无比!! 声明与定义 声明是将一个名称引入程序。定义提供了一个实体在程序中的唯一描述。声明和定义有时是同时存在
安装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...
三周第一次课(4月2日)2.27linux和windows互传文件3.1 用户配置文件和密码配置文件3.2 用户组管理3.3 用户管理Linux和windows文件互传我通常使用的是ftp或者是其他文件管理方式这里介绍一个办法,但是只能在xshell下使用, 安装 lrzsz工具包安装好了之后就可以使用sz命令 +要传输的文件如果是想从windows往linux传就可以使用 ...
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中的一些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中的类是动态加载的,我们先看一下我们常用的类加载方式,先有一个感性的认识,才能进一步深入讨论,类加载无非就是下面三种方式。class A{}class B{}class C{}public class Loader{public static void main(String[] args) throws Exception{Class aa=A.class;Class bb=Class....
软件下载:https://pan.baidu.com/s/1HTY_eHXGLHcCM8q7dxYJWwupun安装总体流程:https://wenku.baidu.com/view/92ea35746edb6f1afe001f3b.html安装过程中遇到的问题:1.点击setup.exe报错 java.lang.RuntimeException: java.io.IOE...
一、原因没有安装网络工具。二、解决方法[[email protected] ~]# yum -y install net-tools本文出现任何错误,请留言批评指正。
背景在很多编程语言(例如java)开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,一旦有修改,牵扯的类会很多。最早在java的spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。目前许多主流PHP框架也使用了依赖注入...
示例代码import android.os.Bundleimport android.support.v7.app.AppCompatActivityimport kotlinx.android.synthetic.main.activity_test.*/** * Array 创建、增、删、改、查、插入 * @author lyl 20181228 * */cl...
以下内容都是本人之前学习的一些笔记很多是摘自网上并非完全原创,特此申明。最简单的一句js:<html><body><script type="text/javascript">document.write("Hello World!");</script></body></html>...