【问题标题】:MySQL Insert/Update Multiple Rows Using ON DUPLICATE KEY [duplicate]MySQL使用ON DUPLICATE KEY插入/更新多行[重复]
【发布时间】:2018-02-04 21:56:01
【问题描述】:

我正在尝试插入,如果 id 已经存在,它会更新该行,但我似乎无法让它工作。

这是插入的精简版本,因为大约有 1400 行可以插入/更新。大多数情况下,该语句将充当多行UPDATE,它将每天通过 CRON 作业运行。它应该更新现有的行,但是如果我添加了新项目,则会将其插入到数据库中。

INSERT INTO `buoy_stations` (`id`, `coords`, `name`, `owner`, `pgm`, `met`, `currents`)
VALUES 
('00922', Point(30,-90),'name 1','owner 1','pgm 1','y','y'),
('00923', Point(30,-90),'name 2','owner 2','pgm 2','y','y'),
('00924', Point(30,-90),'name 3','owner 3','pgm 3','y','y'),
('00925', Point(30,-90),'name 4','owner 4','pgm 4','y','y'),
('00926', Point(30,-90),'name 5','owner 5','pgm 5','y','y')
ON DUPLICATE KEY
UPDATE coords=coords, name=name, owner=owner, pgm=pgm, met=met, currents=currents;

我做错了什么,这不起作用?根据错误,它似乎必须在UPDATE 部分中。

#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use 
near 'pgm=pgm, met=met, currents=currents'

我已经阅读了docs,并查看了几个 StackOverflow 答案,但它们似乎反映了与声明相同的设置。

【问题讨论】:

  • 我没有看到你更新任何东西?您只是添加已经存在的值吗?怎么会有这样的更新?这会导致问题吗?
  • 您的主键或唯一键是什么?
  • 从您的错误消息中,owner=ownerpgm=pgm 之间需要一个逗号。
  • name 是保留关键字:dev.mysql.com/doc/refman/5.7/en/…。尝试在其周围添加'
  • @Sablefoste 是的,这绝对是个问题,感谢它现在运行查询但不更新字段,我认为这可能会解决,因为我没有使用 values()

标签: mysql


【解决方案1】:

您忘记了values() 关键字

INSERT INTO `buoy_stations` (`id`, `coords`, `name`, `owner`, `pgm`, `met`, `currents`)
VALUES 
('00922', 'Point(30,-90)','name 1','owner 1','pgm 1','y','y'),
('00923', 'Point(30,-90)','name 2','owner 2','pgm 2','y','y'),
('00924', 'Point(30,-90)','name 3','owner 3','pgm 3','y','y'),
('00925', 'Point(30,-90)','name 4','owner 4','pgm 4','y','y'),
('00926', 'Point(30,-90)','name 5','owner 5','pgm 5','y','y')
ON DUPLICATE KEY
        UPDATE coords=values(coords), name=values(name), owner=values(owner), pgm=values(pgm), met=values(met), currents=values(currents);

【讨论】:

  • 完美运行!
猜你喜欢
  • 2016-08-28
  • 1970-01-01
  • 2017-02-09
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 2018-05-01
  • 2011-02-12
  • 2010-11-26
相关资源
最近更新 更多