如果存在两个字段则更新,如果不存在则插入(MySQL)

时间:2013-11-26 17:42:18

标签: mysql insert

这不是this questions的(确切)副本,所以我开始了一个新的。

我有这个表(ID是主要和自动增量)

ID | mykey | myfoo | mybar
============================
 1 | 1.1   | abc   | 123
 2 | 1.1.1 | def   | 456
 3 | 1.2   | abc   | 789
 4 | 1.1   | ghi   | 999

我想仅在mykey ='1.1' AND myfoo ='abc'

的情况下,使用mybar =“333”更新第1行

如果mykey!='1.1' OR myfoo!='abc',我想插入一个新行。

这可以用一个陈述吗?

1 个答案:

答案 0 :(得分:5)

MySQL中的唯一索引不必位于单个列上。只需在ALTER TABLE..ADD UNIQUE语句中指定更多列,即可在多个列上添加UNIQUE索引:

ALTER TABLE myTable ADD UNIQUE (
    mykey,
    myfoo
);

现在您可以使用常规的INSERT INTO...ON DUPLICATE KEY语句。

SQLFiddle DEMO请注意,不会添加多个重复的值 - 所有其他值都

注意

如果其中一个为NULL,则将被视为唯一。 mykey为'bar'且myfoo为NULL可以添加到无穷大,即使它们具有“相同”值(NULL实际上不是值)。