使用Postgresql中的Case与其他表连接时更新表

时间:2016-02-07 13:59:43

标签: postgresql join sql-update case

{{3}}

我有2张桌子,其中我需要如下结果:
 如果国家/地区名称为“美国国家/地区”。那么该地区应该被硬编码为墨西哥' &安培;如果国名是'台湾'那么该地区应该被硬编码为“中国”。而对于其余的,它应该与另一个表连接。 我在Postgresql中试过这个查询:

CASE 
    WHEN test.hypno.country_name hp RETURN 'United States'
        THEN UPDATE test.expected_details ed SET ed.place = 'Mexico'
    ELSE UPDATE test.expected_details ed 
         SET ed.place = hp.area_region 
         WHERE ed.WORK = hp.country_name
END

如何为国家/地区包含其他硬编码案例'?
另外,我的查询似乎并不适用于Postgresql。

1 个答案:

答案 0 :(得分:2)

我无法执行完整查询,因为您错过了架构,不确定是否别名hp = hypno或哪些字段加入两个表。但你想要这样的东西

How to do an update + join in PostgreSQL?

UPDATE test.expected_details ed 
SET ed.place = CASE WHEN hp.country_name = 'United States' THEN 'Mexico'
                    WHEN hp.country_name = 'Taiwan' THEN 'China'
                    ELSE hp.area_region 
               END
FROM test.hypno hp
WHERE ed.work = hp.country_name