Hive中连接方式小结

编程入门 行业动态 更新时间:2024-10-25 17:28:31

Hive中连接方式<a href=https://www.elefans.com/category/jswz/34/1769750.html style=小结"/>

Hive中连接方式小结

连接方式可以分为一下几种

 

  • 等值连接
  • 不等值连接
  • 外连接(又可分为左外连接和右外连接)
  • 自连接(确切的来说自连接应该是程序员的一种技巧)

等值连接和不等值连接需要使用到的数据和表

--emp表-------------------------

create table emp(
deptno int, id int, 
name string, sal int 
)row format delimited fields terminated by ',' --salg表---------------------------------- create table salg(
deptno int, 
deptname string, 
salgrade string )
row format delimited fields terminated by ',' --grade表----------------------------------------- create table grade( 
slow int, 
shig int, 
sgrade string 
)row format delimited fields terminated by ',' --emp表数据----------------------------------- 1,01,jack,10000
2,02,monky,8000 
3,03,lucy,7000 
4,02,bob,5000 
5,04,李三,6000--salg表数据------------------------------- 01,天安门,num_one 
02,南天门,num_two 
03,老九门,num_three --grade表数据------------------------------------- 6000,10000,num_one 
5000,5999,num_two 
3000,4999,num_four等值连接的代码-- 等值连接 
select e.id,e.name,e.sal,s.deptname from emp e,salg s where e.deptno = s.deptno

运行结果:

不等值连接

-- 不等值连接

select e.id ,e.name ,e.sal,g.sgrade from emp e,grade g where e.sal between g.slow and g.shig

运行结果:

外连接用到的表和数据如下:

建立表

english: 
create table english(id bigint, 
name string, 
price int 
)row format delimited fields terminated by ' ';建立表chinese: 
create table chinese(ename string,cname string 
)row format delimited fields terminated by ' '; 表数据: english表 
10001 pen 99 
10002 orange 77 
10003 apple 80 
10001 ruler 50 
10004 banana 100 chinese表: 
apple 苹果 
orange 橘子 
banana 香蕉 
ruler 尺子

 

左外连接:

-- 左外连接

【left】join 
select * from english left join chinese on english.name=chinese.ename; -- 右外链接【right】join select * from english right join chinese on english.name=chinese.ename;

左外连接运行结果如图:

其他结果就不一一展示

值得一说的是

Hive中使用semi join替代exist in加一个子查询

使用例句:

select * from english left semi join chinese on english.name=chinese.ename;-- 该代码等价于 select * from english exist in ( select * from english where english.name = chinese.name) 
-- 但是在hive中这么写时不可以的,要用semi join

 

 

 

更多推荐

Hive中连接方式小结

本文发布于:2024-02-11 18:03:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1682459.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:小结   方式   Hive

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!