postgresql 如何更新postgres中某人拥有的最便宜的物品?

7vux5j2d  于 2023-01-30  发布在  PostgreSQL
关注(0)|答案(1)|浏览(91)

假设我在Postgres中有下面的表:

fruit

fruit_id   owner_id   fruit_price    notes
-------------------------------------------
   1          5            15         
   2          5            30
   3          5            20
   4          8            10
   5          8            80

我正在寻找一种方法来更新最便宜的水果拥有的人。
也就是说,我正在寻找一个操作,该操作允许我将notes列设置为个人拥有的最便宜的水果,因此这应该只更新一行(如果最小值有几个关系,则更新多行是可以的)。
例如(伪代码):

UPDATE fruit SET notes = 'wow cheap' WHERE owner_id = 5 AND fruit_price IS cheapest;

这将更新上面示例数据中的第一行,因为1fruit_id是用户5拥有的最便宜的水果。

9jyewag0

9jyewag01#

一种可能的方法是简单地使用相关子查询:

update fruit set
  notes = 'some notes'
where owner_id = 5
  and fruit_price = (
    select min(fruit_price) from fruit f2 
    where f2.owner_id = fruit.owner_id
  );

相关问题