案例情况:同事使用公司数据探查跑一段代码,部分代码如下,报错,显示不支持in内的子查询。但是直接用虚拟机去跑的话代码没有任何报错,也出结果,很奇怪。

SELECT  t1.SIGN_CODE    AS bus_src
,t1.ORGANIZATION_NO
,t3.loan_amts
,t4.restSum
,NULL AS c1
,NULL AS c2
,NULL AS c3
,t5.draft_cnt
,t5.draft_amt
,t5.draft_amt AS draft_balance
,NULL AS c4
FROM FDM_SOR.SOR_EVT_TBL_FB_CUST t1
where t1.FB_CUST_CODE in (
select e.CUST_CODE from FDM_SOR.SOR_EVT_TBL_FB_CREDIT e where e.COMPANY_CODE=''
)
and t1.FB_CUST_CODE in (
select e.FB_CUST_CODE from FDM_SOR.SOR_EVT_TBL_FB_LOAN e where CURRENT_SETTLE_FLAG != 1
)

Hive对子查询的支持很有限。它只允许子查询出现在SELECT语句的FROM子句中。
如果发现Hive不支持你写的子查询,可以看看能不能把它写成连接操作。
例如,一个IN子查询可以写成一个半连接或连接。

如下,使用join去替换in内的子查询

SELECT   t1.SIGN_CODE    AS bus_src
,t1.ORGANIZATION_NO
,t1.loan_amts
,t1.restSum
,NULL AS c1
,NULL AS c2
,NULL AS c3
,t1.draft_cnt
,t1.draft_amt
,t1.draft_amt AS draft_balance
,NULL AS c4
FROM FDM_SOR.SOR_EVT_TBL_FB_CUST t1
inner join(
select e.CUST_CODE as FB_CUST_CODE from FDM_SOR.SOR_EVT_TBL_FB_CREDIT e where e.COMPANY_CODE=''
) a11
on t1.FB_CUST_CODE = a11.FB_CUST_CODE
inner join
(
select e.FB_CUST_CODE from FDM_SOR.SOR_EVT_TBL_FB_LOAN e where CURRENT_SETTLE_FLAG != 1
) c11
on t1.FB_CUST_CODE = c11.FB_CUST_CODE

既然该子查询在虚拟机跑的通的话,那就说明hive肯定是支持in内的查询的,但是为什么用web界面的探查去跑会报错呢。
在hive的官网说,hive在0.13版本以后开始支持更多的子查询,如in ,not in的子查询。
如果我们用的hive不支持如in,exists,not in等子查询,很可能是0.13版本之前的旧版本。

最新文章

  1. Fis3的前端工程化之路[三大特性篇之声明依赖]
  2. MySQL常用命令
  3. 怎么解决mysql不允许远程连接的错误
  4. 1.1---判断字符串是否所有字符都不相同(CC150)
  5. maven学习(4)-本地项目打包发布到私有仓库
  6. 第8课 goto 和 void 分析
  7. android面试
  8. LVS-HA
  9. jsp的<%@ include file="jsp/common.jsp" %>报错误Duplicate local variable basePath
  10. [Everyday Mathematics]20150103
  11. list.add(),向List集合插入对象报空指针异常
  12. 【Codeforces Round 418】An impassioned circulation of affection DP
  13. Ubuntu设置代理的方法
  14. mysql主主配置
  15. windows创建定时任务执行python脚本
  16. 解决反射型XSS漏洞攻击
  17. python字符串的常用方法
  18. hibernate框架学习第三天:对象状态、一级缓存、快照等
  19. PAT Basic 1006
  20. 接上篇:将OneDrive云盘挂载到我的电脑!(1024快乐,明年我应该也可以过这个节日了!)

热门文章

  1. APP测试流程梳理
  2. redhat7.5 替换yum源
  3. opencv的频域滤波
  4. 人工智能AI------有限状态机、分层状态机、行为树
  5. 【Deep Learning Nanodegree Foundation笔记】第 5 课:Logistic Regression
  6. 应用安全 - 工具 - 浏览器 - 火狐(FireFox) - 漏洞汇总
  7. vue --》elementUI 中 el-table组件 如何实现点击列,让该列高亮显示 ?
  8. 使用UI Automation实现自动化测试--1-4
  9. etcd集群添加节点
  10. Spring(八)-- 代理设计模式