我想要做的是当表中包含 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/