目录

  • hive outline
  • hive 内连接 inner join
  • hive 左外连接 left join
  • hive 右外连接 right join
  • hive 满外连接 full join
  • hive left semi join
  • hive cross join
  • hive 多表连接
  • hive 隐式联接

hive outline

链接

hive 内连接 inner join


内连接:2个表的交集,表b中3条记录可以匹配上表a中的1条,left join后记录会有3条,inner join后记录只会有1条

求员工编号,员工名字和所在部门编号

select e.empno, e.ename, d.deptno from emp e join dept d on e.deptno = d.deptno;

hive 左外连接 left join

左外连接:以左表为基准

  1. 如果 表1 中的某条记录在 表2 中刚好只有一条记录可以匹配,那么在返回的结果中会生成一个新的行
  2. 如果 表1 中的某条记录在 表2 中有 N 条记录可以匹配,那么在返回结果中也会生成 N 个新的行,新的N行中会把 表1 的字段进行N次重复
  3. 如果 表1 中的某条记录在 表2 中没有匹配的记录,那么在返回结果中仍然会生成一个新的行,只是该行所包含的 表2 的字段值都是 NULL

求员工编号,员工名字和所在部门编号

select e.empno, e.ename, d.deptno from emp e left join dept d on e.deptno = d.deptno;

hive 右外连接 right join

求员工编号,员工名字和所在部门编号

右外连接:以右表为基准,原理同上

hive (default)> select e.empno, e.ename, d.deptno from emp e right join dept d on e.deptno = d.deptno;

hive 满外连接 full join

求员工编号,员工名字和所在部门编号

满外连接:类似于求并集(右表中有,左表没有,左表补为NULL)(左表中有,右表没有的,右表补为NULL)

select e.id, e.name, e_a.city, e_a.street
from employee efull outer join employee_address e_a on e.id = e_a.id;

hive left semi join

功能:类似于inner join,但只返回左表的结果
优点:比 inner join 效率高一些

select * from employee;
select * from employee_address;

select e.*,e_addr.*
from employee einner join employee_address e_addron e.id = e_addr.id;
id name deg salary dept
1204 prasanth dev 30000 AC
1206 kranthi admin 20000 TP
1201 gopal manager 50000 TP
1202 manisha cto 50000 TP

hive cross join

cross join:交叉连接 ,会返回两个表的笛卡尔积

注意:cross join就是无条件的inner join

--下列A、B、C 执行结果相同,但是效率不一样:
--A:
select a.*, b.*
from employee a,employee_address b
where a.id = b.id; -- 隐式连接select a.*, b.*
from employee ainner join employee_address b
where a.id = b.id; -- 显示连接--B:
-- on:生成临时表时使用的条件 where:临时表生成后,对临时表进行过滤的条件
select *
from employee across join employee_address b on a.id = b.id;
select *
from employee across join employee_address b
where a.id = b.id;--C:
select *
from employee ainner join employee_address b on a.id = b.id;--一般不建议使用方法A和B,因为如果有where子句的话,往往会先进行笛卡尔积返回数据然后才根据where条件从中过滤,因此,如果两个表太大,将会非常非常慢,不建议使用。

hive 多表连接

求员工名字,所在部门编号,和公司所在位置

SELECT e.ename, d.deptno, l.loc_name
FROM emp eJOIN dept dON d.deptno = e.deptnoJOIN location lON d.loc = l.loc;

hive 隐式联接

从hive 0.13.0开始,支持隐式联接表示法(默认是inner join)。这允许FROM子句连接以逗号分隔表列表,而省略JOIN关键字。例如

select a.*, b.*
from employee a,employee_address b
where a.id = b.id; -- 隐式连接select a.*, b.*
from employee ainner join employee_address b
where a.id = b.id; -- 显示连接

例如有这样的一份数据


隐式连接

SELECT *
FROM (SELECT * FROM plant_carbon) t1,(SELECT * FROM plant_carbon) t2;

hive 内连接 左外连接 右外连接 满外连接 左半开连接 交叉连接 多表连接 隐式连接相关推荐

  1. sql隐式连接和显示链接_SQL Server中的嵌套循环联接–批处理排序和隐式排序

    sql隐式连接和显示链接 In SQL Server, it`s not always required to fully understand the internal structure, esp ...

  2. 隐式连接时,windows下VS(包括2005、2008等)下配置OpenCV动态库的步骤

    根据隐式载入时链接的需求,如果一个C++工程需要通过隐式的方式载入动态链接库,则需要:头文件.lib文件和dll文件,其中头文件中有动态库导出函数的声明,lib库里面包含了所有导出符号(包括函数和变量 ...

  3. SQL多表查询:左外连接、右外连接、满外连接、UNION ALL

    文章目录 1 多表查询分类 1.1 等值连接 VS 非等值连接 1.1.1 非等值连接 1.1.2 等值连接 1.2 自连接 VS 非自连接 1.2.1 自连接 1.2.2 非自连接 1.3 内连接 ...

  4. mysql 什么时候用内连接_mysql显示内连接和隐式内连接的区别,什么时候非要用到显示内连接。...

    显式内连接就是使用inner join的办法,写起来复杂些 以windows版本mysql里自带的sakila数据库为例 显式内连接语法 select 字段名 from 表1 join 表2 on 连 ...

  5. Hive sql中的 各种join(内连接、左外连接、右外连接、满外连接)

    join语句 1 等值 join Hive支持通常的SQL JOIN语句,但是只支持等值连接,==不支持非等值连接==. 案例实操 select * from stu left join score ...

  6. mysql外连接插座_深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接...

    1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和 ...

  7. SQL的四种连接-左外连接、右外连接、内连接、全连接(转)

    今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图各表为右外连接并在视图上设置各列的排序和筛选条件就可以达到 ...

  8. 四种连接类型:inner(内连接),left[outer](左外连接),right[outer](右外连接),full[outer](完全外连接)

    在from子句中表示连接操作有四种:inner(内连接),left[outer](左外连接),right[outer](右外连接),full[outer](完全外连接). 一.理论讲解 1.内连接jo ...

  9. mysql 左外连接原理_深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接...

    1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和 ...

最新文章

  1. Notepad++ 列操作
  2. java gui 选项_【Java-GUI】04 菜单
  3. vue-cli 3.0配置webpack目录别名alias
  4. Android自定义RadioButton
  5. VS2013中CUDA的配置
  6. C/C++语言函数学习(3)STL中map容器
  7. matlab 过度曝光,MATLAB:补偿图像处理中的过度曝光/过饱和度
  8. powershell提取html字段,使用PowerShell或VBS从HTML文件中提取表
  9. POJ1050-To the Max
  10. 争议下的「中台之路」,该如何破局?
  11. Erlang实战:建立文本索引
  12. 十大免费java开源商城系统
  13. Windows10如何彻底卸载MySQL
  14. iOS 安全锁原理集合
  15. html 做报表,创建 HTML 报表
  16. 数学四大思想八大方法_四种思想方法,让你轻松掌握高中数学
  17. js怎么获取当前日期
  18. 五篇经典好文,值得一看
  19. 展厅万能播控软件,中控视频播放器!展馆专用!
  20. XCTF final noxss

热门文章

  1. ubuntu 试用ibus云拼音
  2. ui动效 unity_Unity中实现仿主机游戏的UI动画效果
  3. 从区块链到DAG(二)--DAG的基本结构
  4. 产品经理必修课(6):用户体验
  5. 优达(Udacity)finding_donors
  6. Java算法:牛客网京东笔试真题算法Java版1-24题
  7. sage X3 ERP如何帮助企业满足FDA的合规性要求
  8. 1071 小赌怡情 (C++)
  9. 【React全家桶入门之九】图书管理与自动完成
  10. Python3+Django2集成PayPal(贝宝)跨境支付三方接口以及订单查询和退款业务