1. 程式人生 > >Hive之——怎樣寫exist/in子句

Hive之——怎樣寫exist/in子句

轉載請註明出處:https://blog.csdn.net/l1028386804/article/details/80164963

Hive 不支援 where 子句中的子查詢, SQL 常用的 exist in 子句需要改寫。這一改寫相對簡單。考慮以下 SQL 查詢語句:

SELECT a.key, a.value
FROM a
WHERE a.key in54
(SELECT b.key
FROM B);
可以改寫為
SELECT a.key, a.value
FROM a LEFT OUTER JOIN b ON (a.key = b.key)
WHERE b.key <> NULL;

一個更高效的實現是利用 left semi join 改寫為:

SELECT a.key, a.val
FROM a LEFT SEMI JOIN b on (a.key = b.key);

left semi join 是 0.5.0 以上版本的特性。