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

SQLite中如何用UPDATE结合SELECT更新已有记录而非插入新行

问题原因

你之前使用的INSERT是新增记录的语法,执行后会在表中插入新行,不会修改已有行的字段值,这就是产生冗余记录的核心原因。

实现代码

要给ARCHIVIO_Squadre_Campionato表已有的1-20行的ID_Campionato字段批量赋值,使用UPDATE结合子查询的实现代码如下:

cursor.executescript("""
UPDATE ARCHIVIO_Squadre_Campionato
SET ID_Campionato = (
    SELECT ID_Campionato 
    FROM ARCHIVIO_Campionati 
    WHERE Nome_Campionato = 'Serie A'
    LIMIT 1
)
WHERE ID_Sq BETWEEN 1 AND 20;
""")
con.commit()

说明

  • 子查询会先取出ARCHIVIO_Campionati表中Nome_Campionato为'Serie A'对应的ID_Campionato值,外层UPDATE语句会把该值批量赋值给符合WHERE条件的所有行的对应字段
  • LIMIT 1是防护逻辑,避免ARCHIVIO_Campionati表中存在多个匹配记录时,子查询返回多值导致UPDATE执行报错
  • 如果你需要给整张表的所有行都赋值该ID_Campionato,直接删除WHERE ID_Sq BETWEEN 1 AND 20条件即可

注意:你提供的ARCHIVIO_Campionati表结构中,Nome_Campionato字段类型标记为INTEGER,但实际存储的是文本类型的'Serie A',属于结构定义错误,建议将该字段类型调整为TEXT,避免后续查询匹配出现异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:57:01