使用来自PostgreSQL中另一个表的相应值填充数据库表列

时间:2019-01-15 05:19:08

标签: sql postgresql join sql-update syntax-error

表1是“ z_scrapestorm_rentals”,表2是“ pcpao_cols”。它们都具有分别名为“ address_1_line_trunc”和“ address_one_line”的地址列。

两个表中都有一个名为“ web_strap”的列,但只有“ pcpao_cols”在此列中具有不为空的值。

我想将pcpao_cols.web_strap中的这些值复制到z_scrapestorm_rentals.web_strap中,用于z_scrapestorm_rentals.address_1_line_trunc与pcpao_cols.address_one_line匹配的行。

我使用了一些不同的查询来执行此操作,但是它们似乎在没有实际更新任何值的情况下成功运行(没有错误),或者出现错误。

方法1:

(没有错误,DBeaver说已更新了124行,但是z_scrapestorm_rentals表中的'web_strap'列仍然没有任何值...我知道存在匹配项,因为我可以成功查询它们,但是我只是似乎无法更新表格。)

UPDATE z_scrapestorm_rentals
    SET web_strap = z_scrapestorm_rentals.web_strap
    FROM pcpao_cols
    WHERE z_scrapestorm_rentals.address_1_line_trunc ILIKE pcpao_cols.address_one_line;

方法2:

(“ SELECT”处或附近的语法错误)

UPDATE z_scrapestorm_rentals
    SELECT
        z_scrapestorm_rentals.*,
        pcpao_cols.web_strap
    FROM z_scrapestorm_rentals
LEFT JOIN pcpao_cols
ON z_scrapestorm_rentals.address_1_line_trunc = pcpao_cols.address_one_line;

方法3:

(错误:对表“ z_scrapestorm_rentals”的FROM-caluse条目的引用无效...提示:对于表“ z_scrapestorm_rentals”有一个条目,但是无法从查询的此部分进行引用。位置89 )

INSERT INTO z_scrapestorm_rentals (web_strap)
    SELECT web_strap
    FROM pcpao_cols
    WHERE z_scrapestorm_rentals.address_1_line_trunc ILIKE pcpao_cols.address_one_line;

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

好的,所以我回答了我自己的问题,并使用以下查询将另一个表中的web_strap值插入到目标表中:

UPDATE z_scrapestorm_rentals
    SET web_strap = pcpao_cols.web_strap
    FROM
        pcpao_cols
    WHERE Z_scrapestorm_rentals.address_1_line_trunc 
ILIKE pcpao_cols.address_one_line
    RETURNING pcpao_cols.web_strap;

我在问题的“方法1”中详细说明的原始查询中缺少的是RETURNING关键字。