【问题标题】:Is MERGE supported in Greenplum Database 4.3.5.1 build 1Greenplum 数据库 4.3.5.1 build 1 是否支持 MERGE
【发布时间】:2015-11-23 22:33:17
【问题描述】:

我正在尝试为 Greenplum DB 创建合并语句,但遇到语法错误。所以我想知道我写它的方式是否支持 MERGE。

我有两种方法 方法 1-

MERGE into public.table20 pritab 
USING 
(
    select stgout.key1, stgout.key2, stgout.col1
    from public.table20_stage stgout 
    where stgout.sequence_id < 1000
) as stgtab
ON (pritab.key1 = stgtab.key1
and pritab.key2 = stgtab.key2)
WHEN MATCHED THEN
UPDATE SET pritab.key1 = stgtab.key1 
,pritab.key2 = stgtab.key2
,pritab.col1    = stgtab.col1
WHEN NOT MATCHED THEN
INSERT  (key1, key2, col1)
values (stgtab.key1, stgtab.key2, stgtab.col1);

方法二:

public.table20 pritab 
SET pritab.key1 = stgtab.key1 
    ,pritab.key2 = stgtab.key2
    ,pritab.col1    = stgtab.col1
from 
(
        select stgout.key1, stgout.key2, stgout.col1
        from public.table20_stage stgout
        where stgout.sequence_id < 1000
) as stgtab
   ON (pritab.key1 = stgtab.key1
    and pritab.key2 = stgtab.key2)
returning (stgtab.key1, stgtab.key2, stgtab.col1);

我的语法本身有什么问题吗?

【问题讨论】:

  • SET pritab.key1 = stgtab.key1 --> SET key1 = stgtab.key1 您不能使用相关名称/别名作为左值。它是隐含的。
  • 它仍然给出“错误:42601:“合并”处或附近的语法错误
  • 因为postgres中没有MERGE?!
  • 您在 Greenplum 手册的什么地方找到了 MERGE 语句?

标签: greenplum sql-merge


【解决方案1】:

Greenplum 不支持合并,但我写了一篇关于如何在 Greenplum 中实现合并语句结果的博文。

http://www.pivotalguru.com/?p=104

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 2010-09-07
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多