Hive表连接----内连接,全连接,左连接,右连接

数据准备:员工表,部门表
建表语句:12个员工,3个部门
复制代码
create table emp(
    id int,
    name string,
    deptno int
)clustered by (id) into 2 buckets row format delimited fields terminated by ",";

truncate table emp;

insert  into emp (id, name, deptno)
values (1,"zhangsan",10),(2,"lisi",20),(3,"wangwu",30),(4,"zhaoliu",10),(5,"xiaoqi",30),(6,"gouba",10),
       (7,"jiujiu",20),(8,"shishi",30),(9,"shiyi",null),(10,"shier",10),(11,"shisan",10),(12,"shisi",30);

select *
from emp order by id;


truncate table dept;
create table dept(
    deptno int,
    deptname string
)clustered by (deptno) into 3 buckets row format delimited fields terminated by ",";

insert into dept
values (10,"研发部"),(20,"开发部"),(30,"宣传部");

select *
from dept;
1.内连接:只返回两个表中满足连接条件的记录。当某一表中的记录在另一表中没有匹配时,这些记录将被排除在结果之外。
复制代码
select *
from emp e inner join dept d on e.deptno = d.deptno order by id;


1,zhangsan,10,10,研发部
2,lisi,20,20,开发部
3,wangwu,30,30,宣传部
4,zhaoliu,10,10,研发部
5,xiaoqi,30,30,宣传部
6,gouba,10,10,研发部
7,jiujiu,20,20,开发部
8,shishi,30,30,宣传部
10,shier,10,10,研发部
11,shisan,10,10,研发部
12,shisi,30,30,宣传部
2.全连接:返回两个表中所有的记录,无论是否满足连接条件。对于没有匹配的记录,另一表中的字段将显示为NULL。
复制代码
-- 全连接
select *
from emp e full join dept d on e.deptno = d.deptno order by id;


1,zhangsan,10,10,研发部
2,lisi,20,20,开发部
3,wangwu,30,30,宣传部
4,zhaoliu,10,10,研发部
5,xiaoqi,30,30,宣传部
6,gouba,10,10,研发部
7,jiujiu,20,20,开发部
8,shishi,30,30,宣传部
9,shiyi,,,
10,shier,10,10,研发部
11,shisan,10,10,研发部
12,shisi,30,30,宣传部
3.左连接:返回左表中的所有记录,以及右表中满足连接条件的记录。对于左表中没有匹配的记录,右表中的字段将显示为NULL。
复制代码
select *
from emp e left join dept d on e.deptno = d.deptno order by id;



1,zhangsan,10,10,研发部
2,lisi,20,20,开发部
3,wangwu,30,30,宣传部
4,zhaoliu,10,10,研发部
5,xiaoqi,30,30,宣传部
6,gouba,10,10,研发部
7,jiujiu,20,20,开发部
8,shishi,30,30,宣传部
9,shiyi,,,
10,shier,10,10,研发部
11,shisan,10,10,研发部
12,shisi,30,30,宣传部
4.右连接:返回右表中的所有记录,以及左表中满足连接条件的记录。对于右表中没有匹配的记录,左表中的字段将显示为NULL(两个或者两个以上的数据只显示一条null)。
复制代码
-- 修改表数据,将右表某个只设置为空

truncate table dept;

insert into dept
values (10,"研发部"),(null,"开发部"),(30,"宣传部");

select id, name, e.deptno, d.deptno, deptname
from emp e right join dept d on e.deptno = d.deptno order by id;


,,,,开发部
1,zhangsan,10,10,研发部
3,wangwu,30,30,宣传部
4,zhaoliu,10,10,研发部
5,xiaoqi,30,30,宣传部
6,gouba,10,10,研发部
8,shishi,30,30,宣传部
10,shier,10,10,研发部
11,shisan,10,10,研发部
12,shisi,30,30,宣传部
相关推荐
励志成为糕手6 小时前
Hive数据仓库:架构原理与实践指南
大数据·数据仓库·hive·1024程序员节·hql
B站_计算机毕业设计之家7 小时前
Spark微博舆情分析系统 情感分析 爬虫 Hadoop和Hive 贴吧数据 双平台 讲解视频 大数据 Hadoop ✅
大数据·hadoop·爬虫·python·数据分析·1024程序员节·舆情分析
大叔_爱编程11 小时前
基于随机森林算法的Boss直聘数据分析及可视化-hadoop+django+spider
hadoop·django·1024程序员节·spider·随机森林算法·boss直聘
毕设源码-赖学姐13 小时前
【开题答辩全过程】以基于Hadoop的电商数据分析系统为例,包含答辩的问题和答案
大数据·hadoop·分布式·1024程序员节
半梦半醒*1 天前
ELK1——elasticsearch
linux·运维·数据仓库·elasticsearch·centos
阿什么名字不会重复呢1 天前
Hadoop报错 Couldn‘t find datanode to read file from. Forbidden
大数据·hadoop·分布式
通往曙光的路上1 天前
day17_cookie_webstorage
数据仓库·hive·hadoop
呆呆小金人2 天前
SQL入门:正则表达式-高效文本匹配全攻略
大数据·数据库·数据仓库·sql·数据库开发·etl·etl工程师
想ai抽2 天前
大数据计算引擎-从源码看Spark AQE对于倾斜的处理
大数据·数据仓库·spark
呆呆小金人3 天前
SQL入门:别名使用完全指南
大数据·数据库·数据仓库·sql·数据库开发·etl·etl工程师