我想要做的是当表中包含 col0 = valuecol0 AND col2 = valuecol2 的行时,只增加它应该存在的值的第 4 列(如果它不存在)。
否则,我当然想插入该行。

INSERT INTO tablename (col0, col1, col2, col3)
VALUES (valuecol0, valuecol1, valuecol2, valuecol3)
ON DUPLICATE KEY UPDATE col3 = col3 + VALUES( col3 );

无论如何,我不知道应该如何在表中设置 INDEXes,我阅读了文档 here 中的页面,但它没有太大帮助。所以我尝试了所有四种可能的组合,但没有一个成功!

我哪里失败了?

最佳答案

要生成 key 违规,您可以使用唯一索引:

create unique index IX_YourTable_Col0Col2 on YourTable (col0, col2);

有了这个索引,你可以使用 on duplicate key update 语法:
insert into YourTable (col0, col1, col2, col3)
values (1, 2, 1, 2)
on duplicate key update col3 = col3 + 2;

Example at SQL Fiddle.

关于mysql - INSERT ... ON DUPLICATE KEY UPDATE(要比较的两个键),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15732887/

10-13 08:06