更新表 - 关系不存在

时间:2014-10-09 14:47:30

标签: sql postgresql

我正在尝试此查询,但无法正常工作: 这个想法是将数据从一个表复制到另一个表。

UPDATE  A
SET     A.name_en = B.name
FROM    country_name as A
        INNER JOIN country as B
            ON A.id = B.id

我收到此错误:

Error in query: ERROR: relation "a" does not exist
LINE 1: UPDATE A

为什么?

2 个答案:

答案 0 :(得分:4)

你根本不需要额外的加入。您正在执行inner join,因此您只需使用fromwhere条款即可:

UPDATE  country_name
SET     name_en = B.name
FROM    country AS B
WHERE   counry_name.id = B.id;

您需要执行UPDATE sometable ... FROM sometable a ... WHERE sometable.id = a.id技巧的唯一时间是需要对正在更新的表进行外连接。

令人遗憾的是,PostgreSQL的UPDATE ... FROM ...功能并不允许您使用显式连接语法。

答案 1 :(得分:1)

我认为您需要编写表的真实名称,因为操作将在查询本身之外进行。因此,协会将结束。

UPDATE  country_name
SET     A.name_en = B.name
FROM    country_name as A
        INNER JOIN country as B
            ON A.id = B.id
WHERE   A.id = B.id;

从另一个人的答案中获取答案,以确保您的数据库不会出错。