在hive中的where条件中使用子查询

时间:2014-08-06 13:34:33

标签: hive

我有一个查询,其中我有三个具有AND功能的过滤条件。其中一个是使用子查询。是否可以使用hive 0.13版本将子查询写入where condition?

select * from table a where a.dt > (select add_days(k.clndr_dt, -5) from mantas.kdd_cal k where k.clndr_day_age=0 and k.clndr_nm='SYSCAL') and a.dt <= (select k.clndr_dt from mantas.kdd_cal k where k.clndr_day_age=0 and k.clndr_nm='SYSCAL')

这是用oracle编写的,现在我们将它转​​换为hive。但是,我们当前版本的hive 0.10不支持此功能。所以我的问题是可以在后续版本的hive中完成吗?

1 个答案:

答案 0 :(得分:0)

根据hive wiki,您可以在HiveQL 0.13中使用WHERE内的子查询。但是,它们仅限于INEXISTS,但存在一些限制:

  
      
  • 这些子查询仅在表达式的右侧支持。
  •   
  • IN / NOT IN子查询只能选择一列。
  •   
  • EXISTS / NOT EXISTS必须有一个或多个相关谓词。
  •   
  • 仅在子查询的WHERE子句中支持对父查询的引用。
  •