You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL中更新用户拥有的最便宜水果记录?

更新指定用户最便宜水果的notes列

给你两种在PostgreSQL里实现需求的方法,都能处理多个最低价水果同时更新的情况:

方法一:子查询匹配最低价格

这种方法简单直接,先通过子查询拿到目标用户的最低水果价格,再匹配更新:

UPDATE fruit
SET notes = 'wow cheap'
WHERE owner_id = 5
AND fruit_price = (
    SELECT MIN(fruit_price)
    FROM fruit
    WHERE owner_id = 5
);

执行后,owner_id为5的用户所有价格等于最低值(15)的行,notes都会被设为wow cheap,如果有多个同价的最低价水果,也会一起更新。

方法二:窗口函数排名筛选

用窗口函数给每个用户的水果按价格排名,再筛选出排名第一的行更新,适合需要更复杂逻辑的场景:

WITH ranked_fruits AS (
    SELECT fruit_id,
           RANK() OVER (PARTITION BY owner_id ORDER BY fruit_price ASC) AS price_rank
    FROM fruit
    WHERE owner_id = 5
)
UPDATE fruit
SET notes = 'wow cheap'
FROM ranked_fruits
WHERE fruit.fruit_id = ranked_fruits.fruit_id
AND ranked_fruits.price_rank = 1;

这里用RANK()函数,会给同价格的水果分配相同的排名,所以所有最低价的行都会被选中更新。如果换成ROW_NUMBER(),则只会随机选一个最低价行,不符合需求,所以这里用RANK()更合适。

内容的提问来源于stack exchange,提问作者Ryan Peschel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:56:14