Обновить столбец на основе выбора из другой таблицы - PullRequest
1 голос
/ 03 ноября 2019

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

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

Iперепробовал несколько примеров, найденных здесь, но ни один из них не сработал.

Это внутренний выбор

SELECT name, MIN(price) FROMhistorial group by name

это должно обновить

UPDATE names set MIN_PRICE = min_price_from_select WHERE name = name_from_select

результат должен быть,Названия таблиц обновлены минимальными ценами из исторических.

1 Ответ

2 голосов
/ 03 ноября 2019

Вы можете присоединиться к оператору UPDATE с предложением FROM . В вашем случае:

UPDATE names
SET min_price = q.min_price
FROM (
  SELECT name, MIN(price) as min_price
  FROM historical
  GROUP BY name
) as q
WHERE name = q.name

Альтернативой может быть выборка, но она также попытается обновить все names, а не только те, которые существуют в historical:

UPDATE names
SET min_price = (SELECT MIN(price) FROM historical WHERE historical.name = names.name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...