带子查询的sql配置单元更新

vxqlmq5t  于 2021-06-28  发布在  Hive
关注(0)|答案(5)|浏览(360)

我正在尝试从子查询更新配置单元表,我知道配置单元不支持这样的更新。有什么办法吗?
我的更新如下

UPDATE tmp_aka
    SET guid = (SELECT mguid FROM tmp_maxs
                                        WHERE tmp_maxs.guid = tmp_aka.guid);
mrphzbgm

mrphzbgm1#

如果 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
kgqe7b3p

kgqe7b3p2#

您可以在子查询中执行联接,以获得与上面查询中相同的值。尝试使用以下查询:

UPDATE tmp_aka
SET guid = (SELECT mguid FROM tmp_aka tmp JOIN tmp_maxs ON tmp_aka.guid = tmp_maxs.guid);
r6vfmomb

r6vfmomb3#

您的更新可能有一个更简单的解决方案

UPDATE tmp_aka
SET guid = (SELECT mguid FROM tmp_maxs
                                    WHERE tmp_maxs.guid IN tmp_aka.guid);
bvk5enib

bvk5enib4#

要比较两个表中的值,需要联接表,然后比较子查询中的值。希望这能对你有所帮助。

UPDATE tmp_aka
    SET guid = (SELECT t1.mguid FROM tmp_maxs t1 LEFT JOIN tmp_aka t2 ON t1.guid = t2.guid);
c90pui9n

c90pui9n5#

您可以为select语句结果创建一个表,并使用insert into table select values from new created table插入一个新值

相关问题