插入重复键查询以对每行进行自定义更新
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.
我可以 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.