Hive IN子句功能梳理

Hive 0.13.0之前的IN clause中只能包含常量:

SELECT a.key,a.value
FROM a
WHERE a.key in (1,2,3)

Hive 0.13.0实现了IN子句中的uncorrelated subquery:

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)


Hive IN子句的correlated subquery依然没有实现。JIRA中的issue仍处于open状态。


另外,还有一个与IN子句相关的BUG,在刚开始使用IN子句的时候会让人摸不着头脑。

这个BUG在hive 1.2.0中才解决。


相关的HIVE JIRA:

  1. HIVE-784 Support uncorrelated subqueries in the WHEREclause
  2. HIVE-9734Correlatingexpression cannot contain unqualified column references
  3. HIVE-1799Support correlated subqueries in the WHERE clause

你可能感兴趣的:(hive)