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

PostgreSQL按id分组更新date2:下一行date1减1,末行设固定值

PostgreSQL更新实现方案

实现逻辑

核心使用PostgreSQL内置窗口函数LEAD()完成同组下一行值的获取,完全匹配更新规则:

  • 按id字段分组,组内按date1升序排序
  • 用LEAD(date1)获取当前行同组下一行的date1值
  • 非最后一行:date2 = 下一行date1值 - 1天
  • 同组最后一行:date2 = '2999-12-31'

完整SQL代码

WITH next_date_calc AS (
    SELECT
        id,
        date1,
        LEAD(date1) OVER (PARTITION BY id ORDER BY date1) AS next_date1
    FROM t
)
UPDATE t
SET date2 = COALESCE(next_date_calc.next_date1 - INTERVAL '1 day', '2999-12-31'::DATE)
FROM next_date_calc
WHERE t.id = next_date_calc.id 
  AND t.date1 = next_date_calc.date1;

注意事项

如果表有单独主键字段,建议将WHERE条件中的关联逻辑换成主键关联,避免同id下出现重复date1导致更新异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:27:02