【问题标题】:On Duplicate Key update - MariaDB重复密钥更新 - MariaDB
【发布时间】:2018-06-24 14:30:44
【问题描述】:

我有一个 MySQL 语句,可以一次将数据插入 4 行。 insert 正在工作,但我在使用 ON DUPLICATE KEY UPDATE 时遇到了困难。

我收到一个错误:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''count = VALUES(11, 22, 33, 44)'' at line 15

这是一个例子:

INSERT INTO table1 (id, dept, date, count)
VALUES
(1, 4, 2018-01-15, 3),
(2, 3, 2018-01-15, 4),
(3, 3, 2018-01-15, 14),
(4, 2, 2018-01-15, 11)
ON DUPLICATE KEY UPDATE
count = VALUES(11, 22, 33, 44)

我尝试使用'' 包装部门和计数更新,但这没有帮助。有没有更好的方法来更新 DUPLICATES 上的 count。能否请你帮忙!谢谢!

【问题讨论】:

  • count是半保留字;建议您更改列名或在其周围添加反引号。

标签: mysql sql mariadb mariasql


【解决方案1】:

VALUES() 的参数应该是要插入的列的名称。如果没有重复,它将使用本应插入该列的值。

INSERT INTO table1 (id, dept, date, count)
VALUES
(1, 4, 2018-01-15, 3),
(2, 3, 2018-01-15, 4),
(3, 3, 2018-01-15, 14),
(4, 2, 2018-01-15, 11)
ON DUPLICATE KEY UPDATE
count = VALUES(count)

如果id = 1 已经存在,这会将其计数设置为3 并保持所有其他列不变。

【讨论】:

  • @GordonLinoff 它确实有效!我有一个额外的',在看到你的评论后我修复了它。谢谢你,感谢@Bramar!!
  • 如果要设置多列,则为dept = VALUES(dept), date = VALUES(date), count = VALUES(count)
  • @Barmar 是的,我就是这么做的。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2014-10-31
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 2013-06-19
  • 2011-09-30
  • 2017-09-30
  • 1970-01-01
相关资源
最近更新 更多