#postgresql #join #sql-update
#postgresql #Присоединиться #sql-обновление
Вопрос:
У меня есть 2 таблицы
sale_order_line
id| order_id| date_order
1 | 5 | null
2 | 6 | null
3 | 6 | null
и
sale_oder
id| date_order
5 | '2020-08-25'
6 | '2020-09-28'
Как я могу создать запрос, который обновит все date_order
в sale_order_line
таблице на основе order_id
Желаемый результат будет
id| order_id| date_order
1 | 5 | '2020-08-25'
2 | 6 | '2020-09-28'
3 | 6 | '2020-09-28'
Ответ №1:
Как описано в руководстве, вы можете использовать предложение FROM в инструкции UPDATE:
update sale_order_line sol
set date_order = so.date_order
from sale_order so
where so.id = sol.order_id;
Ответ №2:
Помимо использования синтаксиса обновления соединения Postgres, вы также можете использовать здесь коррелированный подзапрос:
UPDATE sale_order_line sol
SET date_order = (SELECT so.date_order FROM sale_order so WHERE so.id = sol.order_id);