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

如何在PostgreSQL中为表的列填充不同值?

为现有数据表的ID列批量填充不同值的SQL方法

问题描述

现有数据表结构及数据如下:

ID   |      Text
                     =====================
                             |      'a'                 
                             |      'b'                 
                             |      'c'

需要修改为:

ID  |      Text
                     =====================
                       3   |      'a'            
                       5   |      'b'                                
                       9   |      'c'

注:ID列的数值仅为示例,可任意设置。

已知INSERT INTO需要逐行写入所有数据,UPDATE会为列填充相同值,想找更合适的批量赋值方法。

解决方案

方法1:带条件的UPDATE语句

如果可以通过Text列的唯一值区分每行,直接用CASE语句批量设置不同ID:

UPDATE 你的表名
SET ID = CASE Text
    WHEN 'a' THEN 3
    WHEN 'b' THEN 5
    WHEN 'c' THEN 9
END;

这种方式适合行数不多、每行有唯一标识列的场景,一次执行即可完成所有行的ID更新。

方法2:使用自增变量批量赋值(以MySQL为例)

如果ID只需要唯一递增、不需要指定具体数值,用自增变量自动生成:

SET @id := 0;
UPDATE 你的表名
SET ID = @id := @id + 2; -- 步长可调整,比如+1得到连续值,+2得到间隔值

执行这两句后,ID列会被赋予连续的递增数值,初始值和步长可按需修改。

方法3:基于唯一标识列更新(若表有主键/行号)

如果表存在主键、自增列等唯一标识列,可基于这些列精准更新:

UPDATE 你的表名
SET ID = 
    CASE 
        WHEN 唯一标识列 = 1 THEN 3
        WHEN 唯一标识列 = 2 THEN 5
        WHEN 唯一标识列 = 3 THEN 9
    END;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:12:34