【问题标题】:Bulk insert and update in mysql在mysql中批量插入和更新
【发布时间】:2015-09-25 07:34:05
【问题描述】:

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

我的表是: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,我应该怎么做?

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

【问题讨论】:

  • 为什么不试试看会发生什么?

标签: mysql bulkinsert on-duplicate-key


【解决方案1】:
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'、)中有一个 ' 、 ',

【讨论】:

  • 它可以工作,但由于某种原因,我更新了 5 条记录,其中只有 1 列正在更改,它告诉我有 10 行受到影响。有什么想法吗?
  • 你能用新的查询编辑你上面的问题吗?我需要看看它现在是如何构建的
  • 几乎一样,我只是在更新部分用 AND 替换了。见上文
  • 第一个值中有一个 ' , ' ('7656', 'Tom', 'user.com/7656' , ),
  • 是的,这是一个打字错误,应该从那里删除..但这不是影响 10 行的事情
猜你喜欢
  • 1970-01-01
  • 2011-09-11
  • 2019-03-29
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 2020-09-24
  • 1970-01-01
相关资源
最近更新 更多