4

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

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

无论如何,我不知道应该如何在表中设置索引,我在这里阅读了文档中的页面,但它没有多大帮助。所以我尝试了所有四种可能的组合,但没有一种奏效!

我哪里失败了?

4

1 回答 1

9

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

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;

SQL Fiddle 的示例。

于 2013-03-31T18:42:03.420 回答