oracle数据库EXISTS语法转成hive语法LEFT SEMI JOIN

Hive中EXISTS的底层实现实际上是LEFT SEMI JOIN。这种转换方式性能最优,执行计划与EXISTS完全一致。

oracle:

SELECT a.* 
FROM table1 a
WHERE EXISTS (SELECT 1 FROM table2 b WHERE a.id = b.id);

hive:

SELECT a.*
FROM table1 a
LEFT SEMI JOIN table2 b ON a.id = b.id;
hive中LEFT SEMI JOIN,相当于in关联只取左表
posted @ 2025-08-08 11:22  所向披靡zz  阅读(5)  评论(0)    收藏  举报