join语句

1 等值 join

Hive支持通常的SQL JOIN语句,但是只支持等值连接,==不支持非等值连接==。

案例实操

select * from stu left join score on stu.id = score.s_id;

根据学生和成绩表,查询学生姓名对应的成绩

2 表的别名

好处

  • 使用别名可以简化查询。

  • 使用表名前缀可以提高执行效率。

案例实操:合并老师与课程表

-- hive当中创建course表并加载数据
create table course (c_id string, c_name string, t_id string)
row format delimited fields terminated by '\t';
​
load data local inpath '/xsluo/install/hivedatas/course.csv' overwrite into table course;
​
select * from teacher t join course c on t.t_id = c.t_id;

3 内连接 inner join

内连接:只有进行连接的两个表中都存在与连接条件相匹配的数据才会被保留下来。

  • join默认是inner join

案例实操

select * from teacher t inner join course c  on t.t_id = c.t_id;

4 左外连接 left outer join

左外连接:

  • join操作符==左边表中==符合where子句的所有记录将会被返回。

  • 右边表的指定字段没有符合条件的值的话,那么就使用null值替代。

案例实操:查询老师对应的课程

select * from teacher t left outer join course c on t.t_id = c.t_id;

5 右外连接 right outer join

右外连接:

  • join操作符==右边表中==符合where子句的所有记录将会被返回。

  • 左边表的指定字段没有符合条件的值的话,那么就使用null值替代。

案例实操

select * from teacher t right outer join course c on t.t_id = c.t_id;

6 满外连接 full outer join

满外连接:

  • 将会返回==所有表中==符合where语句条件的所有记录。

  • 如果任一表的指定字段没有符合条件的值的话,那么就使用null值替代。

案例实操

select * from teacher t full outer join course c on t.t_id = c.t_id;

7 多表连接

多个表使用join进行连接

==注意:==连接 n个表,至少需要n-1个连接条件。例如:连接三个表,至少需要两个连接条件。

案例实操

select * from teacher t
left join course c on t.t_id = c.t_id
left join score s on c.c_id = s.c_id
left join stu on s.s_id = stu.id;

多表连接查询,查询老师对应的课程,以及对应的分数,对应的学生

一张图轻松搞懂Hive中的join(内连接、左外连接、右外连接、满外连接)相关推荐

  1. 一张图轻松搞懂javascript event对象的clientX,offsetX,screenX,pageX区别

    先总结下区别:event.clientX.event.clientY鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条.IE事件和标准事件都定义了这2个属性event. ...

  2. Ubuntu:Ubuntu系统下在pycharm软件内配置anaconda环境(一张图轻松搞定!)

    Ubuntu:Ubuntu系统下在pycharm软件内配置anaconda环境(一张图轻松搞定!) 目录 Ubuntu系统下在pycharm软件内配置anaconda环境 Ubuntu系统下在pych ...

  3. 轻松玩转hive中各种join之间的关系以及使用

    hive编程是整个数据仓库操作的核心,而各种业务之间的join是hive的核心,所以熟练明白滴掌握hive中的各种join是数据仓库开发工程师必备的技能.    hive中的join只支持等值join ...

  4. javascript 不让成为nan_一张图彻底搞懂JavaScript的==运算

    大家知道,==是JavaScript中比较复杂的一个运算符.它的运算规则奇怪,容易让人犯错,从而成为JavaScript中"最糟糕的特性"之一. 在仔细阅读了ECMAScript规 ...

  5. synchronized 分布式时为什么会失效_10张图,搞懂索引为什么会失效?

    MySQL数据是如何存储的? 聚集索引 我们先建如下的一张表 CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ...

  6. I2C协议靠这16张图彻底搞懂(超详细)

    文章目录 背景 硬件层 数据传输协议 实际上如何工作? 单个主设备连接多个从机 多个主设备连接多个从机 如何编程? 总结 背景 I²C(Inter-Integrated Circuit),中文应该叫集 ...

  7. 四张图彻底搞懂CNN反向传播算法(通俗易懂)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:机器学习算法那些事 阅读本文之前,可以先阅读之前讲述的全 ...

  8. 原来10张图就可以搞懂分布式链路追踪系统原理

    分布式系统为什么需要链路追踪? 随着互联网业务快速扩展,软件架构也日益变得复杂,为了适应海量用户高并发请求,系统中越来越多的组件开始走向分布式化,如单体架构拆分为微服务.服务内缓存变为分布式缓存.服务 ...

  9. 13 张图彻底搞懂分布式系统服务注册与发现原理

    作者 | 雷架 来源 | 爱笑的架构师(ID:DancingOnYourCode) 头图 |  CSDN 下载自东方IC 在微服务架构或分布式环境下,服务注册与发现技术不可或缺,这也是程序员进阶之路必 ...

  10. 一图轻松搞懂吉利Basetech之OCC

    吉利BaseTech之吾见 正如大家所了解到的那样,吉利作为国内规模较大的主机厂,自从收购了沃尔沃汽车公司,内部也在不断消化来自沃尔沃的Basetech技术.以BaseTech 2.0为例,Baset ...

最新文章

  1. ASP.NET Web页面(.aspx)添加用户控件(.ascx)无显示的问题
  2. 思科超融合:主推HyperFlex,押注HCI
  3. Apollo后台配置:关联公共Namespace(类似与继承父类配置)
  4. 在县城投资买一辆出租车,一个月能收入多少钱?
  5. (OS X) OpenCV架构x86_64的未定义符号:错误(OpenCV Undefined symbols for architecture x86_64: error)...
  6. Visual Stutio中win32控制台应用程序、win32项目、MFC项目的区别:
  7. FreeRTOS+STM32F103中断中发送任务通知单片机死机问题
  8. Java多线程(二)——多线程基本特性
  9. Leetcode 1222.可以攻击国王的皇后
  10. 王建宙称乔布斯故意展开TD-LTE版iPhone
  11. esayUI实践的一些体会
  12. 视频搬运伪原创 视频修改MD5值
  13. SEO自动外链工具推荐:站群推广利器SEO,在线批量发外链让新站快速收录
  14. 计算机运算实际运算的误差,误差
  15. [离散数学]集合论基础P_4:运算定律及其证明
  16. 【高等数学】四.多元函数微分学和二重积分
  17. 手把手教你实现嵌入式SNMP代理第1部分-熊健-专题视频课程
  18. 快牛智能凉经(数据挖掘日常实习)
  19. Fortran学习3:控制流2:循环
  20. 将微信聊天记录中的文件发送到邮箱

热门文章

  1. PHP微信小程序生成带参二维码getwxacodeunlimit
  2. TF-IDF算法原理和公式
  3. 语音视频自动生成字幕功能介绍
  4. 基、维数和坐标 过渡矩阵与坐标变换
  5. MySQL 如何使用show processlist进行过滤
  6. 金蝶专业版服务器操作系统,金蝶kis专业版 服务器 设置
  7. .net Core 3.1下的Roslyn 动态编译
  8. 深海迷航坐标传送代码_深海迷航代码输入方法
  9. QQ坦白说_6.09前
  10. idea创建VUE项目