一、建表数据准备
参考hive之full outer join(全连接)使用方法_IMezZ的博客-CSDN博客目录介绍语法例子创建顾客表:customers创建订单表:ordersfull outer join语句 left join + union + right join语句介绍full outer join结合了 LEFT JOIN 和 RIGHT JOIN 的结果,并使用NULL值作为两侧缺失匹配结果。语法SELECT table1.column_name(s),table2.column_name(s) FROM table1 ..https://blog.csdn.net/qq_36249352/article/details/124017263?spm=1001.2014.3001.5502
二、语法
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使用方法**,敬请期待!**受益的朋友或对大数据技术感兴趣的伙伴记得点赞关注支持一波!**
版权归原作者 IMezZ 所有, 如有侵权,请联系我们删除。