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

如何用单条PostgreSQL语句批量更新整列NULL值(无WHERE条件)

PostgreSQL 按顺序批量更新列值(无WHERE条件)

要实现将逗号分隔字符串中的值按顺序批量更新到calculation列,可通过拆分字符串+行号关联的方式用单条SQL完成,具体示例如下:

完整SQL语句

UPDATE "table" t
SET calculation = s.val
FROM (
    -- 拆分逗号分隔字符串,为每个值分配行号
    SELECT 
        val,
        row_number() OVER () AS rn
    FROM unnest(string_to_array('akdak,dndja,jsnajsna', ',')) val
) s
-- 为原表生成确定顺序的行号(此处按PKID升序,可按需调整)
JOIN (
    SELECT 
        PKID,
        row_number() OVER (ORDER BY PKID) AS rn
    FROM "table"
) t_rn ON t.PKID = t_rn.PKID AND s.rn = t_rn.rn;

关键说明

  1. 字符串拆分与行号生成:
    • string_to_array将逗号分隔的字符串转为数组,unnest把数组拆分为单行数据,再通过row_number()为每个值分配连续序号。
  2. 原表行号关联:
    • 必须为原表生成确定顺序的行号(示例中按PKID升序排序),否则数据库默认的行顺序不固定,会导致值对应错误。若业务有其他排序需求,直接修改ORDER BY后的字段即可。
  3. 注意事项:
    • 确保逗号分隔字符串中的值数量与原表行数完全匹配,否则会出现部分行未更新或更新错误的情况。
    • 由于table是PostgreSQL关键字,需用双引号包裹为"table"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:02:09