分享

HIVE不支持这样的子查询么?

mvs2008 发表于 2015-11-6 15:40:06 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 42490
本帖最后由 mvs2008 于 2015-11-6 15:44 编辑

[mw_shl_code=sql,true]select * from tab_name1 where create_date>=(select max(create_date) from tab_name2) and create_date<'XXXXX'[/mw_shl_code]
执行以上HQL报错
[mw_shl_code=sql,true]select * from tab_name1 where create_date in (select max(create_date) from tab_name2) [/mw_shl_code]
执行以上HQL可以。

有什么办法可以达到一样的效果而又不报错呢?

已有(4)人评论

跳转到指定楼层
leo_1989 发表于 2015-11-6 16:03:06
改成下面试试
select * from tab_name1 where create_date in(select max(create_date) from tab_name2) and create_date<'XXXXX'
回复

使用道具 举报

mvs2008 发表于 2015-11-9 08:34:12
leo_1989 发表于 2015-11-6 16:03
改成下面试试
select * from tab_name1 where create_date in(select max(create_date) from tab_name2) a ...

你这样写的话,岂不是取的单一值?其实我想取的是区间。
回复

使用道具 举报

bob007 发表于 2015-11-9 09:58:11
mvs2008 发表于 2015-11-9 08:34
你这样写的话,岂不是取的单一值?其实我想取的是区间。

试试下面支持吗
select * from tab_name1 where create_date =(select max(create_date) from tab_name2) and create_date<'XXXXX'


回复

使用道具 举报

mvs2008 发表于 2015-11-9 15:19:37
bob007 发表于 2015-11-9 09:58
试试下面支持吗
select * from tab_name1 where create_date =(select max(create_date) from tab_name ...

不支持的,用IN不报错之外,其他的操作符都报错。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条