在配置单元中使用join更新查询

carvr3hs  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(341)

我正在努力做到以下几点:

UPDATE a
SET col1 = B.col1,
col3= B.col4
FROM table A 
JOIN table B on a.col2=b.col2
WHERE A.col5 = B.col5;

但是,这会引发以下错误:
编译语句时出错:parseexception失败-在“col4”附近的“from”处缺少eof
我尝试重新排列set和from子句,但无法执行查询。一次又一次地出现例外情况。我的表类型、列数据类型都是相同的。在表上运行静态更新非常好。
有什么方法可以让我在配置单元中运行join更新吗?请帮忙。

z2acfund

z2acfund1#

Hive不支持这个。只能使用以下结构:

UPDATE a SET col1 =..., col3=... WHERE ...

但是,有两个选项可以更新表:
子查询

UPDATE a SET col1 =..., col3=... WHERE col2 in (SELECT ...)

这不是你的案子
插入覆盖

INSERT OVERWRITE TABLE a SELECT B.col1, col2, A.col3, ...

小心!它会覆盖旧表,如果查询错误,您可能会丢失或损坏数据。在对实际数据执行之前测试两次。

相关问题