【问题标题】:SQL Query with ON DUPLICATE KEY UPDATE does not work使用 ON DUPLICATE KEY UPDATE 的 SQL 查询不起作用
【发布时间】:2012-05-15 13:59:41
【问题描述】:

我有一张带有个人资料的桌子。如果有用户#:userId 的配置文件,我想更新它。如果该用户没有个人资料,我想插入它。我试过这个 SQL 查询,但没有用:

插入配置文件 设置名称=:名称, 网站=:网站, 生物 = :生物 WHERE 用户 = :userId 重复密钥更新 名称=:名称, 网站=:网站, 生物 = :生物

“用户”是主键

编辑:我在我的 SQL 中发现了一个错误,当它看起来像这样时,它工作得很好:

插入配置文件 SET user = :userId, --

谢谢大家!

【问题讨论】:

  • 您说 user 是主键,但这不在您的查询中。

标签: php mysql sql


【解决方案1】:

您的 INSERT 语法不正确(看起来像是修改后的 UPDATE 语句)。尝试类似:

INSERT INTO profiles (name, website, bio)
       VALUES (:name, :website, :bio)
  ON DUPLICATE KEY UPDATE website = :website, bio = :bio;

有关更多信息和示例,请参阅documentation for INSERT ... ON DUPLICATE KEY UPDATE

【讨论】:

  • INSERT INTO ... SET 语法实际上是正确的,并且有效(milov.nl/2836)。但是当我将此语法与 ON DUPLICATE KEY UPDATE 一起使用时,它变得不正确。它是 MySQL 的“特性”吗?
  • INSERT INTO ... SET 不是标准 SQL,必须是 Mysql 扩展。
猜你喜欢
  • 2020-07-20
  • 2014-06-23
  • 1970-01-01
  • 2011-02-12
  • 2011-05-05
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多