hiveQL例子

【sql在三年前学过,现在差不多都忘了,学习hive顺便复习下sql语句】

创建2个表stu(id int,name string,grade int,tid int),teacher(tid int,name string),并分别load data。

1、创建一个view(学生的名字,对应的教师名字)【涉及到连接】

create view stu_teacher as select stu.name as stuname,teacher.name as tea_name from stu join teacher on(stu.tid=teacher.tid);

2、连接操作(left semi join类似于关系数据库中的in,其余的类似于关系数据库中的子查询)

左连接:获取学生以及学生对应的老师的信息(当学生老师不存在时显示null)

select stu.id,stu.*,teacher.* from stu right outer join teacher on (stu.tid=teacher.tid);

全连接:获取学生以及学生对应的老师的信息(当学生老师不存在时显示null,当老师的学生不存在时也显示null)

select stu.id,stu.*,teacher.* from stu full outer join teacher on (stu.tid=teacher.tid);

左半连接:获取有学生的老师的信息

select teacher.* from teacher left semi join stu on (stu.tid=teacher.tid);

当一个表足够小时,这时可以将这张表加载进内存,再进行连接(MAP join),其中红色的表示要将这张表加入内存进行map join

select /*+ MAPJOIN(teacher)*/ stu.*,teacher.* from stu join teacher on (stu.tid=teacher.tid);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值