根据从另一张表中进行选择来更新列

时间:2019-11-03 16:52:38

标签: postgresql sql-update

Im托盘根据来自另一个表的选择更新表。这两个表的共同名称是coll。

所以这个想法是grom hitorial来获取每个名称的最低价格,并将其更新为破坏名称的名称中的每一行。

我尝试了一些在这里找到的示例,但是没有一个窍门。

这是内部选择

SELECT name, MIN(price) FROMhistorial group by name

这应该更新

UPDATE names set MIN_PRICE = min_price_from_select WHERE name = name_from_select

结果应该是,表名称使用历史记录中的最低价格进行了更新。

1 个答案:

答案 0 :(得分:2)

您可以join an UPDATE statement with a FROM clause。就您而言:

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

替代方法将是子选择,但是这还将尝试更新 all names,不仅是historical中存在的那些

UPDATE names
SET min_price = (SELECT MIN(price) FROM historical WHERE historical.name = names.name)