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

SQLite批量更新问题:如何用每行自身数据拼接更新字段

解决SQLite批量更新时每条记录用自身字段拼接的问题

嘿,我之前也踩过这个坑!你遇到的问题大概率是因为写UPDATE语句时,错误地用了会返回单一值的查询(比如不带WHERE的子查询),导致所有记录都复用了第一条的artistname和trackname。其实SQLite的UPDATE操作可以直接引用当前行的字段,完全不需要绕弯子。

正确的批量更新写法

直接在SET子句里用SQLite的拼接运算符||,把当前行的字段拼起来就行:

UPDATE your_table 
SET trackpath = 'location/' || artistname || ' - ' || trackname || '.mp3';

如果需要统一大小写(比如你的示例里是小写的rihanna和work),可以加上LOWER()函数处理:

UPDATE your_table 
SET trackpath = 'location/' || LOWER(artistname) || ' - ' || LOWER(trackname) || '.mp3';

为什么之前的写法会出错?

如果你的原语句类似下面这样,就会出现所有记录用第一条数据的情况:

-- 错误示例!不要这么写
UPDATE your_table 
SET trackpath = (SELECT 'location/' || artistname || ' - ' || trackname || '.mp3' FROM your_table);

这种不带条件的子查询只会返回第一条记录的拼接结果,然后把这个结果赋值给所有行的trackpath,这就是问题根源。

验证效果

拿你的示例数据来说:

原数据:location/rihanna - work.mp3|rihanna|work
更新后(用带LOWER的语句):trackpath会变成location/rihanna - work.mp3(和原数据一致,如果是其他记录,比如artistname是"Taylor Swift",trackname是"Shake It Off",就会生成location/taylor swift - shake it off.mp3)

只要确保UPDATE语句里直接引用表的字段,每条记录都会自动使用自身的artistname和trackname来拼接生成新的trackpath。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:36:31