【问题标题】:What is wrong with this SQL INSERT?这个 SQL INSERT 有什么问题?
【发布时间】:2021-08-08 23:09:35
【问题描述】:

我正在尝试根据已在所述行中的特定 ID 将 3 个值传递到 SQLite 数据库中的现有行中。

cur.execute("INSERT INTO anime (title, img, synopsis) VALUES (?, ?, ?) WHERE malid = ?", [title, img, synopsis, x])

我尝试了各种组合,但总是出错,在这种情况下只是

sqlite3.OperationalError: near "WHERE": syntax error

【问题讨论】:

  • 这看起来不像是合法的插入语句。 insert 表示添加新行。 where 子句应该适用于什么?
  • 如果要更改现有行,则需要 update 语句,而不是 insert

标签: python sql sqlite sql-insert


【解决方案1】:

WHERE 语句不能在INSERT 命令中使用。它仅用于存在选择状态的命令中;比如UPDATESELECT。 从逻辑上思考,同时插入和过滤是没有意义的!使用INSERT 命令时进入VALUES 的所有内容都将添加到表的末尾。

【讨论】:

    【解决方案2】:

    您不能在INSERT ... VALUES ... 语句中使用WHERE 子句。

    我怀疑您想更新表中的一行而不是插入新行:

    cur.execute("UPDATE anime SET (title, img, synopsis) = (?, ?, ?) WHERE malid = ?", (title, img, synopsis, x))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 2013-10-13
      • 2010-10-21
      相关资源
      最近更新 更多