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

Sqlite3中使用UPDATE FROM (VALUES)语法报错问题排查

批量更新access_keys表的SQL错误分析与解决方法

错误原因

你使用的应该是SQLite数据库,它不支持你写的UPDATE ... FROM语法格式——这种写法常见于PostgreSQL等数据库,但SQLite的UPDATE语句语法规则不同,因此触发了syntax error near "("的报错。

正确的实现方式

根据SQLite的语法规范,你可以用以下两种方式实现批量更新:

方式一:使用CASE WHEN条件赋值

这种方式适合仅更新指定字段,且保留其他字段原有值的场景:

UPDATE access_keys
SET global_id = CASE id
    WHEN 1 THEN 123
    WHEN 2 THEN 321
    ELSE global_id -- 不匹配的id保持原global_id值
END
WHERE id IN (1, 2); -- 限定更新范围,避免全表扫描

方式二:使用REPLACE INTO(需id为主键)

如果id是access_keys表的主键,可以用REPLACE语句实现批量更新,原理是先删除匹配主键的旧行,再插入新行:

REPLACE INTO access_keys (id, global_id)
VALUES (1, 123), (2, 321);

注意:如果表中还有其他字段,必须在REPLACE语句中指定这些字段的有效值,否则未指定的字段会被设为默认值或NULL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:45:42