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

SQLite:如何基于数组批量更新数据且无需临时表?

SQLite无临时表批量更新指定值

假设你的表名为num_table,存储整数值的列名为value,可以通过以下两种方式实现需求,无需创建额外临时表:

方法一:使用CASE WHEN条件匹配

直接在UPDATE语句中通过CASE表达式映射旧值与新值:

UPDATE num_table
SET value = CASE value
    WHEN 1 THEN 11
    WHEN 3 THEN 12
    WHEN 5 THEN 13
    ELSE value
END;
  • 逻辑:遍历每一行数据,当value匹配from数组中的值时,替换为to数组对应的新值;不匹配时保持原值不变。

方法二:使用VALUES子句构造映射关系(SQLite 3.15.0+支持)

如果需要映射的配对较多,用VALUES子句临时构造旧值-新值的映射集合,再关联更新:

UPDATE num_table
SET value = new_val
FROM (
    VALUES (1, 11), (3, 12), (5, 13)
) AS mappings(old_val, new_val)
WHERE num_table.value = mappings.old_val;
  • 逻辑:VALUES子句会在内存中生成临时的映射数据集,但不会创建持久化的临时表,通过WHERE条件匹配后完成批量更新。

验证结果

执行更新后,查询表中数据(假设通过rowid保持原顺序):

SELECT value FROM num_table ORDER BY rowid;

将得到预期结果:11,2,12,4,13,6,7,8,9,0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:22:02