hive之left semi join(左半连接)使用方法
·
目录
四、left semi join、join、left join的区别
一、建表数据准备
二、语法
left semi join只能查询左表字段,不能查询右表字段。
SELECT
table1.column_name(s)
FROM table1
left semi join table2
ON table1.column_name = table2.column_name;
相当于
SELECT
table1.column_name(s)
FROM table1 where table1.column_name in
(select table2.column_name from table2);
三、left semi join例子
select a.customer_id,a.customer_name from default.customers a
left semi join default.orders b
on a.customer_id=b.customer_id
相当于
select a.customer_id,a.customer_name
from default.customers a where a.customer_id in
(slect b.customer_id from default.orders b)
两者区别是:
LEFT SEMI JOIN 的限制是,右侧表只能在连接条件(ON 子句)中引用,而不能在 WHERE 或 SELECT 子句等中引用。
结果

四、left semi join、join、left join的区别
1、left semi join
left semi join只能查询左表字段,不能查询右表字段。left semi join只能展示两个表能够关联上的数据。
当查询右表字段时,会报如下错误:
select a.customer_id,a.customer_name,b.order_date from default.customers a
left semi join default.orders b
on a.customer_id=b.customer_id

2、left join
left join可以查询右表字段,不会报错。left join会展示左表想要查询的所有数据,不止能展示关联上的,不能关联上的也能展示。
select a.customer_id,a.customer_name,b.order_date from default.customers a
left join default.orders b
on a.customer_id=b.customer_id
结果

3、join
join可以查询右表字段,不会报错。join只会展示能关联上的数据,不能关联上的不能展示。
select a.customer_id,a.customer_name,b.order_date from default.customers a
join default.orders b
on a.customer_id=b.customer_id
结果

此时,如果不需要查询右表字段时和left semi join是一致的。
结语
本次的分享就到这里了,下一篇博客博主将带来hive之Map Join使用方法,敬请期待!受益的朋友或对大数据技术感兴趣的伙伴记得点赞关注支持一波!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
https://blog.csdn.net/qq_36249352/article/details/124017263?spm=1001.2014.3001.5502


所有评论(0)