Заполнение столбца таблицы базы данных соответствующими значениями из другой таблицы в PostgreSQL - PullRequest
0 голосов
/ 15 января 2019

Таблица 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 строки были обновлены, но столбец 'web_strap' в таблице z_scrapestorm_rentals по-прежнему не содержит значений ... Я знаю, что совпадения существуют, поскольку я могу их успешно запросить, но я просто не могу обновить таблицу.)

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:

(ошибка: недопустимая ссылка на запись FROM-caluse для таблицы "z_scrapestorm_rentals" ... Подсказка: есть запись для таблицы "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 голосов
/ 15 января 2019

Хорошо, я ответил на свой вопрос и вставил значения 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.

...