hive中的left semi join 替換sql中的in操做

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)

相關文章
相關標籤/搜索