Hive 如何在配置单元中使用多个子查询

Hive 如何在配置单元中使用多个子查询,hive,Hive,我正在执行下面的查询以获取错误 失败:SemanticException[错误10249]:第13:15行不支持的子查询表达式“master\u cd”:仅支持1个子查询表达式 SELECT cfs.roll_no, max(cclas.crdm_cd) as crdm_cd, max(cclas.kjtm_cd) as kjtm_cd FROM cust_focus cfs LEFT JOIN cust_class cclas ON (cfs.CF_CLAS_NO = cclas.CLAS_N

我正在执行下面的查询以获取错误

失败:SemanticException[错误10249]:第13:15行不支持的子查询表达式“master\u cd”:仅支持1个子查询表达式

SELECT
cfs.roll_no,
max(cclas.crdm_cd) as crdm_cd,
max(cclas.kjtm_cd) as kjtm_cd
FROM cust_focus cfs
LEFT JOIN cust_class cclas
ON (cfs.CF_CLAS_NO = cclas.CLAS_NO
AND cfs.DFS_CD = cclas.DFS_CD 
AND cclas.D_AREA = 'US' 
AND cclas.active_flag = 'Y')
WHERE cfs.roll_no NOT IN (SELECT roll_no FROM class_hist)
AND UPPER(TRIM(cfs.D_AREA)) = 'US'
AND (cfs.master_cd IN (SELECT msk5.msk5_master_cd from msk5_mst_tbl as msk5 WHERE cfs.master_cd=msk5.msk5_master_cd and msk5_m_code=9)
OR cfs.master_cd IS NULL)
group by cfs.roll_no;
你能帮我解决这个错误吗

提前谢谢

 SELECT 
 cfs.roll_no,   
 max(cclas.crdm_cd) as crdm_cd,
 max(cclas.kjtm_cd) as kjtm_cd
 FROM(select cf.* from cust_focus cf
 join class_hist ch on cf.roll_no!=ch.roll_no
join msk5_mst_tbl msk5 on cf.master_cd = msk5.msk5_master_cd where 
msk5_m_code=9))cfs
LEFT JOIN cust_class cclas
ON (cfs.CF_CLAS_NO = cclas.CLAS_NO
AND cfs.DFS_CD = cclas.DFS_CD 
AND cclas.D_AREA = 'US' 
AND cclas.active_flag = 'Y')
AND UPPER(TRIM(cfs.D_AREA)) = 'US'
OR cfs.master_cd IS NULL
但是,这么多的连接会影响性能!! 仅支持多个联接子查询

SELECT
cfs.roll_no,
max(cclas.crdm_cd) as crdm_cd,
max(cclas.kjtm_cd) as kjtm_cd
FROM cust_focus cfs
LEFT JOIN cust_class cclas
ON (cfs.CF_CLAS_NO = cclas.CLAS_NO
AND cfs.DFS_CD = cclas.DFS_CD 
AND cclas.D_AREA = 'US' 
AND cclas.active_flag = 'Y')
WHERE cfs.roll_no NOT IN (SELECT roll_no FROM class_hist)
AND UPPER(TRIM(cfs.D_AREA)) = 'US'
AND (cfs.master_cd IN (SELECT msk5.msk5_master_cd from msk5_mst_tbl as msk5 WHERE cfs.master_cd=msk5.msk5_master_cd and msk5_m_code=9)
OR cfs.master_cd IS NULL)
group by cfs.roll_no;
下面的查询工作没有任何问题

选择*从测试中选择id,其中id>10 a 从测试中加入select id,其中a.id=b.id上的id>20b

在您的例子中,两个过滤器都是针对同一个tablecust_focus使用的,否则您可以在不同的表上应用过滤器,如上面的示例所示