我有以下查询,我想在Hive中运行它,但Hive不支持更新中的内联查询。有谁能帮我在Hive中完成这个更新查询吗?
UPDATE TABLE1 FROM
(SELECT COUNT(*) AS NEW_COUNT
FROM TABLE2
WHERE XTRCT_DT IN (SELECT MAX(XTRCT_DT) FROM TABLE3)) AS T
SET TBL = T.NEW_COUNT
WHERE XTRCT_DT IN(SELECT MAX(XTRCT_DT) FROM TABLE4) AND TN=1;
目前我使用的是高于3.0的配置单元版本。
我已尝试对此更新使用Merge语句,但没有成功。有人能帮忙吗?
这是我尝试使用的MERGE语句,但在ON子句中包含in时出错。
MERGE INTO TABLE1 USING (
SELECT COUNT(*) AS NEW_COUNT FROM TABLE2 WHERE XTRCT_DT IN(SELECT MAX(XTRCT_DT) FROM TABLE3)) AS T
ON XTRCT_DT IN(SELECT MAX(XTRCT_DT) FROM TABLE4) AND TN=1
SET TBL=T.NEW_COUNT;
1条答案
按热度按时间qacovj5a1#
您的
MERGE
缺少WHEN MATCHED THEN UPDATE
子句,并且在源子查询T和目标TABLE1之间没有联接条件。请将筛选日期移动到源子查询中,并使用它来联接:您可以将MATCH_DT的子查询与TABLE2交叉连接(不带ON子句的join),而不是使用
SELECT
列表中的标量子查询。