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

PostgreSQL中如何添加列并使用max()函数基于其他列填充?

解决PostgreSQL新增列并填充另一列最大值的问题

你之前的两种写法都存在问题:

  • 第一种用INSERT的方式错误,INSERT是用来添加新行的,不是更新已有行的字段值;
  • 第二种UPDATE语句直接在SET里使用MAX()聚合函数不符合语法,PostgreSQL不允许在这个位置直接调用聚合函数。

正确的做法是先通过子查询获取veggie_id的最大值,再用这个值更新所有行的max_veggie列:

-- 新增列(这一步你写的是对的)
ALTER TABLE stable
ADD COLUMN max_veggie INTEGER;

-- 用veggie_id的最大值填充新增列
UPDATE stable
SET max_veggie = (SELECT MAX(veggie_id) FROM stable);

如果你的表数据量极大,想优化性能,也可以用关联子查询的写法:

UPDATE stable
SET max_veggie = mv.max_val
FROM (SELECT MAX(veggie_id) AS max_val FROM stable) mv;

这两种写法都会把stable表中所有行的max_veggie列设置为veggie_id列的全局最大值。

内容的提问来源于stack exchange,提问作者miranda harvey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:32:34