Обновить столбец из другого столбца таблицы с помощью отношения

#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);