使用postgres中的内部联接使用其他列值更新列值

时间:2017-07-04 21:35:30

标签: sql postgresql

在实现以下代码时,我收到了错误消息,"关系" n"不存在"

UPDATE n
    SET n.var_a = a.var_b
    FROM table_n n INNER JOIN
         table_a a
         ON n.var_c = a.var_d AND lower(n.var_e) = lower(a.var_f);

但是,以下代码正常运行。在上面的代码中应该纠正哪个部分?我也试过使用全表名。

SELECT *
FROM table_n n INNER JOIN
     table_a a
     ON n.var_c = a.var_d AND lower(n.var_e) = lower(a.var_f);

1 个答案:

答案 0 :(得分:0)

你非常接近。这是Postgres的正确语法:

UPDATE table_n n
    SET var_a = a.var_b
    FROM table_a a 
    WHERE n.var_c = a.var_d AND lower(n.var_e) = lower(a.var_f);

在Postgres中,您需要在UPDATE子句中指定要更新的表。您可以为其指定别名,但无法识别FROM子句中的别名(因此您的错误)。