Обновите таблицу A, объединив таблицу B и таблицу A

#sql #postgresql

#sql #postgresql

Вопрос:

У меня есть таблица A, таблица B, моя база данных выглядит примерно так: таблица A ключ1 ключ2 ключ5 ключ6

Таблица B ключ3 ключ4

Данные в A.key2 совпадают с данными в B.key3 и A.key5 имеют те же данные, что и B.ключ 4 Я хочу обновить ключ1 в таблице A до другой строки в таблице A на основе некоторого условия для ключа 6 таблицы A

Я хочу обновить некоторые строки в таблице A значениями, которые я получил бы, объединив таблицу A с таблицей B.

Я попытался выполнить запрос типа

 UPDATE table A set a.key1 = c.key1 FROM A a JOIN B b ON a.key2 = b.key3 JOIN A c ON b.key4 = c.key5 WHERE A.key6 = somevalue; 
 

sql выдает ошибку —
столбец a отношения A не существует

Комментарии:

1. Пожалуйста, предоставьте образцы данных, желаемые результаты, четкое объяснение того, что вы пытаетесь сделать, и единый тег базы данных. Я удалил несовместимые теги в качестве одолжения.

Ответ №1:

Это правильный синтаксис для Postgresql:

 UPDATE A a
SET key1 = c.key1 
FROM B b 
JOIN A c ON b.key4 = c.key5 
WHERE a.key2 = b.key3  AND a.key6 = somevalue;
 

Комментарии:

1. Отлично работал с небольшим изменением вместо A.key6 Мне пришлось использовать.key6