我正在尝试这样做:
INSERT INTO table (id, hits) VALUES ('abc', 1), ('cde', 1), ('fgh', 1)
ON DUPLICATE KEY UPDATE hits = VALUES (2), (6), (10)
代码是错误的(可能需要将id放入 key 更新中)但是有办法做到这一点吗?
最佳答案
您需要正确使用VALUES
,这确实相当简单:
INSERT INTO table (id, hits) VALUES ('abc', 1), ('cde', 1), ('fgh', 1)
ON DUPLICATE KEY UPDATE hits = VALUES (hits)
编辑:如果您迫切需要在重复键的单个查询中为命中分配与插入查询中不同的值,请尝试 CASE operator .
INSERT INTO table (id, hits) VALUES ('abc', 1), ('cde', 1), ('fgh', 1)
ON DUPLICATE KEY UPDATE hits = CASE VALUES(id)
WHEN 'abc' THEN 3
WHEN 'cde' THEN 2
WHEN 'fgh' THEN 28
ELSE 11 -- this is a default value assuming you need one
END;
关于php - 重复插入多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7470467/