如何在Vertica Update中进行内部联接?

时间:2017-02-20 13:35:53

标签: sql vertica

我试图在更新查询中使用3个表进行内部联接。我试图在多个站点找到解决方案,但没有得到解决方案。
我正在尝试查询示例:

UPDATE TGT
SET C1 = CASE WHEN TGT.c2 = SRC.c2 AND SRC.C3 = 'P' THEN SRC.C1 ELSE NULL END,
C2 = CASE WHEN TGT.c2 = SRC.c2 AND SRC.C3 = 'D' THEN SRC.C1 ELSE NULL END
FROM SRC
INNER JOIN SRC1
ON SRC.C9 = SRC1.C9
AND SRC.C9 = TGT.C9;

先谢谢!!

1 个答案:

答案 0 :(得分:1)

我希望您的语法能够正常工作。 (我没有方便的Vertica,但它的查询解析器基于Postgres。)

或许 - 与Postgres不同 - JOIN中不允许FROM。然后,您可以将连接条件放在WHERE子句中:

UPDATE TGT
    SET C1 = (CASE WHEN TGT.c2 = SRC.c2 AND SRC.C3 = 'P' THEN SRC.C1 END)
        C2 = (CASE WHEN TGT.c2 = SRC.c2 AND SRC.C3 = 'D' THEN SRC.C1 END)
FROM SRC, SRC1
WHERE SRC.C9 = SRC1.C9 AND SRC.C9 = TGT.C9;