我试图从子查询更新Hive表,我知道hive不支持此类更新。这有什么解决办法吗?
我的更新看起来像这样
UPDATE tmp_aka
SET guid = (SELECT mguid FROM tmp_maxs
WHERE tmp_maxs.guid = tmp_aka.guid);
答案 0 :(得分:2)
可能是您可以为select语句结果创建一个表,并插入一个新值,并将insert插入到新创建的表中的表选择值
答案 1 :(得分:2)
您可以在子查询中执行连接,以获得与上述查询中相同的值。请尝试使用以下查询:
< Initialization: 0.068667
< Transposition: 0.063927
---
> Initialization: 0.081022
> Transposition: 0.039169
4005c4005
< Print transposition: 3.901960
---
> Print transposition: 4.040136
答案 2 :(得分:2)
如果tmp_maxs
包含tmp_aka
的所有记录,则可以这样操作:
INSERT overwrite TABLE tmp_aka
SELECT tmp_aka.col1, tmp_aka.col2, …, tmp_maxs.mguid
FROM tmp_aka LEFT JOIN tmp_maxs ON tmp_aka.guid = tmp_maxs.guid
答案 3 :(得分:0)
要比较两个表中的值,您需要联接表,然后在子查询中比较值。希望对您有帮助。
UPDATE tmp_aka
SET guid = (SELECT t1.mguid FROM tmp_maxs t1 LEFT JOIN tmp_aka t2 ON t1.guid = t2.guid);
答案 4 :(得分:0)
对于您的更新可能有一个更简单的解决方案
UPDATE tmp_aka
SET guid = (SELECT mguid FROM tmp_maxs
WHERE tmp_maxs.guid IN tmp_aka.guid);