mysql – INSERT … ON DUPLICATE KEY UPDATE(要比较的两个键)

我想要做的是只增加它应该存在的值的第4列,如果它不存在,当有一个col0 = valuecol0和col2 = valuecol2的行在表中时.
否则,我想插入行,当然.

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

无论如何,我无法弄清楚我应该如何设置表中的INDEX,我阅读了文档here中的页面,但它没有多大的帮助.所以我尝试了所有四种可能的组合,没有人工作!

我哪里失败了?

解决方法:

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

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

使用此索引,您可以使用on duplicate keys update语法:

insert into YourTable (col0, col1, col2, col3) 
values (1, 2, 1, 2) 
on duplicate key update col3 = col3 + 2;

Example at SQL Fiddle.

上一篇:php – 检查CodeIgniter中的重复数据尝试创建回调函数


下一篇:python – 删除列表中的重复数据帧