准备数据
u1文件中的数据如下:
1,a
2,b
3,c
4,d
7,y
8,uu2文件中的数据如下:
2,bb
3,cc
7,yy
9,ppcreate table if not exists u1(
id int,
name string
)
row format delimited
fields terminated by ','
;create table if not exists u2(
id int,
name string
)
row format delimited fields terminated by ','
;load data local inpath '/data/u1.txt' into table u1;
load data local inpath '/data/u2.txt' into table u2;
select * from u1 cross join u2;

如下

  • A表left join B表,是横向关联
  • A表left join B表,A表的所有数据都有,B表只有部分数据
select * from u1 left join u2 on u1.id=u2.id;
+----+----+----+----+
|id  |name|id  |name|
+----+----+----+----+
|1   |a   |NULL|NULL|
|2   |b   |2   |bb  |
|3   |c   |3   |cc  |
|4   |d   |NULL|NULL|
|7   |y   |7   |yy  |
|8   |u   |NULL|NULL|
|NULL|NULL|NULL|NULL|
+----+----+----+----+
  • join后的表宽度为A表与B表的宽度之后,当然,我们可以自由选取join后需要的列,并不一定要保留所有列
select u1.id,u1.name,u2.name
from u1left join u2 on u1.id = u2.id;+----+----+----+
|id  |name|name|
+----+----+----+
|1   |a   |NULL|
|2   |b   |bb  |
|3   |c   |cc  |
|4   |d   |NULL|
|7   |y   |yy  |
|8   |u   |NULL|
|NULL|NULL|NULL|
+----+----+----+

left join还可以应用在拉链表中,比如当一个全量表left join一个增量表,可以对全量表中的数据字段依据条件进行更新!

left join与left outer join无区别

select u1.id,u1.name,u2.name
from u1left outer join u2 on u1.id = u2.id;
+----+----+----+
|id  |name|name|
+----+----+----+
|1   |a   |NULL|
|2   |b   |bb  |
|3   |c   |cc  |
|4   |d   |NULL|
|7   |y   |yy  |
|8   |u   |NULL|
|NULL|NULL|NULL|
+----+----+----+

left semi join

select *
from u1left semijoin u2 on u1.id = u2.id;
+--+----+
|id|name|
+--+----+
|2 |b   |
|3 |c   |
|7 |y   |
+--+----+

求差集

-- 找出u1有,u2没有的
select * from u1 left join u2 on u1.id=u2.id where u2.id is null;
+----+----+----+----+
|id  |name|id  |name|
+----+----+----+----+
|1   |a   |NULL|NULL|
|4   |d   |NULL|NULL|
|8   |u   |NULL|NULL|
|NULL|NULL|NULL|NULL|
+----+----+----+----+

求交集

-- 找出u1和u2都有的
select * from u1 left join u2 on u1.id=u2.id where u2.id is not null;
+--+----+--+----+
|id|name|id|name|
+--+----+--+----+
|2 |b   |2 |bb  |
|3 |c   |3 |cc  |
|7 |y   |7 |yy  |
+--+----+--+----+
select * from u1 inner join u2 on u1.id=u2.id;
+--+----+--+----+
|id|name|id|name|
+--+----+--+----+
|2 |b   |2 |bb  |
|3 |c   |3 |cc  |
|7 |y   |7 |yy  |
+--+----+--+----+

hive left join入门相关推荐

  1. Hive中JOIN的使用入门

    Hive中join的用法 Hive中Join的通常使用有以下几种: inner join 等值连接 left join  right join  full join left semi join cr ...

  2. 5、HIVE DML操作、load数据、update、Delete、Merge、where语句、基于分区的查询、HAVING子句、LIMIT子句、Group By语法、Hive 的Join操作等

    目录: 4.2.1 Load文件数据到表中 4.2.2查询的数据插入到表中 4.2.3将Hive查询的结果存到本地Linux的文件系统目录中 4.2.4通过SQL语句的方式插入数据 4.2.5 UPD ...

  3. mysql 或hive left join不加关联条件

    mysql left join不加关联条件 create table if not exists u1 (id int,name varchar(20) ) ENGINE = MyISAMDEFAUL ...

  4. Hive中Join的 MR 底层原理

    Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join) 一. Hive Common Join 如果不指定MapJoin或者不符合 ...

  5. Hive的Join操作

    文章目录 简介 1.LEFT JOIN 2.INNER JOIN 3.RIGHT JOIN 4.FULL JOIN 5.CROSS JOIN 6.JOIN ON和WHERE条件区别 7.其他常用SQL ...

  6. Hive map side join入门及测试

    什么是MapJoin? MapJoin顾名思义,就是在Map阶段进行表之间的连接.而不需要进入到Reduce阶段才进行连接.这样就节省了在Shuffle阶段时要进行的大量数据传输.从而起到了优化作业的 ...

  7. 数据分析从零到精通第二课 Hive和Spark入门

    03 离线利器:大数据离线处理工具 Hive 的常用技巧 今天为你介绍数据分析师最常用的数据处理工具 Hive 的一些使用技巧.这些技巧我们在工作中使用得比较频繁,如果运用得当,将为我们省去不少时间精 ...

  8. Hive中JOIN操作

    1. 只支持相等JOIN. 2. 多表连接当使用不同的列进行JOIN时,会产生多个MR作业. 3. 最后的表的数据是从流中读取,而前面的会在内存中缓存,因此最好把最大的表放在最后. SELECT /* ...

  9. Apache Hive JdbcStorageHandler 编程入门指南

    以下博文转载自:https://www.iteblog.com/archives/2525.html Apache Hive 从 HIVE-1555 开始引入了 JdbcStorageHandler ...

最新文章

  1. Collections.addAll() 的使用 以及和list.addAll() 的区别
  2. quickselect_QuickSelect:使用代码示例解释的快速选择算法
  3. lucene源代码学习之 lucene的经典打分过程
  4. MaxScale Binlog Server
  5. 作业五—个人项目-小学四则运算 “软件”之升级版1
  6. hello1源码解析
  7. (47)FPGA同步复位与异步复位(异步复位同步释放)
  8. 设计界新人不用再苦找资源网站啦!一流导航神器收藏起来!
  9. 设计模式之GOF23组合模式
  10. jQuery实现文字左右收缩效果示例
  11. crmeb java单商户源码java二开文档部署文档H5商城部署文档【5】
  12. 计算机控制技术 温钢云,计算机控制课程设计――大纯时延一阶惯性环节温度控制系统.docx...
  13. osgEarth使用经纬度定义视点/设置相机跟随移动的节点
  14. 蓝桥杯训练系统 分解质因数
  15. 连八股文都不懂还指望在后端混下去么
  16. wordcloud:自定义背景图片,生成词云
  17. js版本飞机大战(完整代码)
  18. vue项目中实现价格被横线划掉,折扣价效果
  19. Datawhale优秀学习者4月名单!
  20. 017循环的方式定义数组、018循环for each、019方法练习、020实参和形参、021方法的返回值

热门文章

  1. 计算机在英语课中的应用 博客,信息技术在小学英语教学中的应用
  2. python识别银行卡数字_Python银行卡数字识别项目 (Opencv)
  3. python定义空函数体_Python 2.2 定义函数
  4. 那个抗血栓机器人_美国DJO抗血栓压力袜
  5. html事件绑定的方法,如何获取html元素所绑定的事件
  6. linux vnc 安装目录,Linux环境VNC服务安装、配置与使用(图)
  7. easyUi load方法重新加载表单的数据
  8. pks服务器清除归档文件路径,HoneywellPKS系统维护手册.doc
  9. linux过滤某个mac的包,macOS 下使用 tcpdump 抓包
  10. pix4d怎么查看点云数据_PIX4D的两种像控点刺点方式探讨