我有一个查询,其中我有三个具有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中完成吗?
答案 0 :(得分:0)
根据hive wiki,您可以在HiveQL 0.13中使用WHERE
内的子查询。但是,它们仅限于IN
和EXISTS
,但存在一些限制:
- 这些子查询仅在表达式的右侧支持。
- IN / NOT IN子查询只能选择一列。
- EXISTS / NOT EXISTS必须有一个或多个相关谓词。
- 仅在子查询的WHERE子句中支持对父查询的引用。