我正在尝试在我的表中进行一些批量插入,但它应该可以处理重复值。如果有重复那么它应该更新行而不是更新它。
我的表是:user(id, name, url) where id is PK
我试过这个:
INSERT INTO `user` (`id`, `name`, `url`)
VALUES
('7656', 'Tom', 'http://user.com/7656'),
('1234', 'Jean', 'http://user.com/1234'),
('8596', 'Pierre', 'http://user.com/8596'),
('2035', 'Somon', 'http://user.com/2035'),
('3685', 'Lola', 'http://user.com/3685')
ON DUPLICATE KEY UPDATE name=VALUES(name), url=VALUES(url)
假设我要插入的所有 5 条记录都已经存在于我的表中,并且只有要更新的 url,我应该怎么做?
是否可以像这样使用批量插入来更新行?
最佳答案
INSERT INTO `table` (a, b, c)
VALUES (?, ?, ?),
VALUES (?, ?, ?),
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE a = VALUES(a), b = VALUES (b), c = VALUES(c)
您需要每次都设置 VALUES。
此外,您构建查询的方式也没有问题,但您在第一个值中有一个额外的 ' , ' ('7656', 'Tom', ' http://user.com/7656 ' , ),
关于mysql - 在mysql中批量插入和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32777081/