在mysql中批量插入和更新

时间:2015-09-25 07:34:06

标签: mysql bulkinsert on-duplicate-key

我正在尝试在我的表中进行一些批量插入,但它应该满足重复值。如果有重复,那么它应该更新行而不是更新它。

我的表是:user(id,name,url),其中id是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条记录已经存在于我的表格中,只有更新的网址,我应该怎么做?

是否可以像这样使用批量插入更新行?

1 个答案:

答案 0 :(得分:0)

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')中有','额外内容,