如何插入非重复项,我可以将MERGE与自引用一起使用吗?

问题描述 投票:1回答:1

我需要插入非重复的值...此“合并自引用”未按预期方式工作,但未生成错误消息...我可以使用类似的东西吗?

MERGE INTO mydb.mytab AS Tref 
USING mydb.mytab AS T ON Tref.id=T.id
WHEN NOT MATCHED THEN INSERT VALUES (123, 'etc');

((更新但不改变问题)似乎其他构造,如建议的here,是

INTO INTO mydb.mytab 
  SELECT t1.* 
  FROM ( select stack(2, 123,'ect1',  20,'etc2') as (id,etc) ) t1
  LEFT OUTER JOIN mydb.mytab t2 ON t1.id = t2.id
  WHERE t1.id is null
;

这是不优雅(还有其他吗?),但是它正在工作(!)。 MERGE有其他选择吗?

hive conditional-statements hiveql sql-insert sql-merge
1个回答
0
投票

仅当mydb.mytab不包含匹配的行时,合并才会插入

MERGE INTO mydb.mytab AS Tref 
USING  ( select stack(2, 123,'ect1',  20,'etc2') as (id,etc) ) AS T ON Tref.id=T.id
WHEN NOT MATCHED THEN INSERT VALUES (t.id, t.etc) --columns positions should match those in Tref 
;
© www.soinside.com 2019 - 2024. All rights reserved.