插入重复键查询以对每行进行自定义更新

Insert into on duplicate key query for custom update on each row

我可以 insert/update 基于 MySQL 服务器上的以下查询的数据。

INSERT INTO users (user_id, books) 
VALUES 
(1, “book1, book2”), 
(2, “book3, book4”) 
ON DUPLICATE KEY UPDATE books=“book1, book2”;

但是,有没有办法在 UPDATE 语句之后为每一行设置多个书籍列值?像下面这样的东西但是有效:)

INSERT INTO users (user_id, books) 
VALUES 
(1, “book1, book2”), 
(2, “book3, book4”) 
ON DUPLICATE KEY UPDATE books 
VALUES (“book1, book2”), (“book3, book4”);

如果这不是实现此目的的正确方法,我应该如何构造此类查询?

非常感谢您的提前指导,

道格

我假设重复键是列 user_id

您可以使用 CASE 表达式:

INSERT INTO users (user_id, books) VALUES 
(1, 'book1, book2'), 
(2, 'book3, book4') 
ON DUPLICATE KEY UPDATE 
books = CASE user_id
  WHEN 1 THEN 'book10, book20'
  WHEN 2 THEN 'book30, book40'
END;

查看简化版 demo.