LEFT SEMI JOIN 是 IN/EXISTS 子查詢的一種更高效的實現。 查詢
Hive 當前沒有實現 IN/EXISTS 子查詢,因此你能夠用 LEFT SEMI JOIN 重寫你的子查詢語句。LEFT SEMI JOIN 的限制是, JOIN 子句中右邊的表只能在 di
ON 子句中設置過濾條件,在 WHERE 子句、SELECT 子句或其餘地方過濾都不行。
SELECT a.key, a.value
FROM a
WHERE a.key in
(SELECT b.key
FROM B);
能夠被重寫爲:
SELECT a.key, a.val
FROM a LEFT SEMI JOIN b on (a.key = b.key)