使用select和value创建临时表

bwitn5fc  于 2021-05-27  发布在  Hadoop
关注(0)|答案(2)|浏览(462)

我正在尝试在配置单元中创建一个临时表,如下所示:

CREATE TEMPORARY TABLE mydb.tmp2 
AS SELECT * FROM (VALUES (0, 'abc')) 
AS T (id , mystr);

但这给了我以下错误:

SemanticException [Error 10296]: Values clause with table constructor not yet supported

有没有其他方法通过在同一命令中显式直接提供值来创建临时表?
我的最终目标是 MERGE 命令,临时表将插入 USING 命令。比如说:

MERGE INTO mydb.mytbl
USING <temporary table>
...
wljmcqd8

wljmcqd81#

使用子查询而不是临时表:

MERGE INTO mydb.mytbl t
USING  (SELECT 0 as id, 'abc' as mystr) tmp on tmp.id = t.id
fjaof16o

fjaof16o2#

配置单元不支持 values 建造师。您可以使用以下查询来实现这一点:

CREATE TEMPORARY TABLE mydb.tmp2 
AS SELECT 0 as id, 'abc' as mystr;

对于合并,可以使用临时表,如下所示:

merge into target_table
using ( select * from mydb.tmp2) temp
on temp.id = target_table.id
when matched then update set ...
when not matched then insert values (...);

相关问题