Hive sql中的 各种join(内连接、左外连接、右外连接、满外连接)
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 sql中的 各种join(内连接、左外连接、右外连接、满外连接)相关推荐
- Hive Sql中六种面试题型总结
Hive Sql中六种面试题型总结 一.常用函数 二.N日留存 1.思路分析 三.连续登陆 1.数据准备 2.思路分析一 3.思路分析二 四.Top N 1.数据准备 2.思路分析 五.行列互转 1. ...
- Linq To Sql中实现Left Join与Inner Join使用Linq语法与lambda表达式
当前有两个表,sgroup与sgroupuser,两者通过gKey关联,而sgroup表记录的是组,而sgroupuser记录是组中的用户,因此在sgroupuser中不一定有数据.需要使用Left ...
- Spark SQL中出现 CROSS JOIN 问题解决
Spark SQL中出现 CROSS JOIN 问题解决 参考文章: (1)Spark SQL中出现 CROSS JOIN 问题解决 (2)https://www.cnblogs.com/yjd_hy ...
- sql中的left join、right join、inner join
sql中的left join.right join.inner join 转自:http://www.cnblogs.com/pcjim/articles/799302.html left join( ...
- Hive SQL 中ARRAY或MAP类型数据处理:lateral view explode()/posexplode()——行转列函数
前言:在对表数据进行批量处理过程中,常常碰上某个字段是一个array或者map形式的字段,一列数据的该字段信息同时存在多个值,当我们需要取出该数组中的每一个值实现一一对应关系的时候,可以考虑使用lat ...
- 内连接,外连接(左外,右外),全连接(交集),交叉连接(笛卡尔积)
内连接,外连接(左外,右外),全连接(交集),交叉连接(笛卡尔积) 先略两个表 首先左连接:SELECT * FROM test1 a LEFT JOIN test2 b ON a.id = b.id ...
- sql中什么时候用内连接查询,什么时候用外连接查询
需要查找两张表同时存在的数据,使用内连接 需要查找两张表中一张表存在,另一张表不存在的时候使用左外链接 或 右外链接 内连接的查询结果都是满足连接条件的元组.但有时我们也希望输出那些不满足连接条件的元 ...
- sql中的left join 查询
join 是 SQL查询中很常见的一种操作,具体来讲有join,left join, right join,full join等很多形式.具体的原理如下图所示.但其中最常见的还是使用left join ...
- 关于SQL中Union和Join的用法
转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 一直以来,对于数据库SQL方面都是半吊子水平,能写一些基本的增删改查的语句,大部分时间都是用下Where, ...
最新文章
- legend位置 pyecharts_实验|pyecharts数据可视化分析-1
- 2.1顺序表(链表)
- js高级程序设计--AJAX JSON
- poj 2503(字符串hash)
- linux驱动层获取当前的系统时间
- 基于小样本学习的图像分类技术综述
- 制作一键架设服务器,【教程】大话西游一键端制作装备物品教程(一键端搭建续)...
- 语音识别下一步发展如何?哪些技术可以使用?哪些价值可以发掘?
- Arduino Uno接JQ8900-16p语音播报模块
- 计算生辰八字五行属性的算法
- c51语言访问绝对地址的方法,51单片机绝对地址访问的两种方法
- 常见的物联网卡套餐分类
- 用python绘制熊猫图案,在python中绘制熊猫系列的CDF
- 跨语言rpc框架Thrift
- ubuntu程序莫名崩溃显示killed,程序闪退,排除OOM
- C语言算法题:简单密码
- altium designer 10 的AD10Crakc.zip解压后没有patch.exe
- 蓝桥杯 第十七天 动态规划(3)
- 圈排序——python
- BIT前端训练营笔记(一)| 20211225 预习 | 常用标签、语义化、响应式设计