这不是这个问题的(确切)重复,所以我开始了一个新问题.
我有这个表(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
Run Code Online (Sandbox Code Playgroud)
我想在mybar ='1.1' 和 myfoo ='abc'的情况下用mybar ="333"更新第1行
如果mykey!='1.1' 或 myfoo!='abc',我想插入一个新行.
这可能是一个声明吗?
MySQL中的唯一索引不必位于单个列上.只需在ALTER TABLE..ADD UNIQUE语句中指定更多列,就可以在多个列上添加UNIQUE索引:
ALTER TABLE myTable ADD UNIQUE (
mykey,
myfoo
);
Run Code Online (Sandbox Code Playgroud)
现在您可以使用常规INSERT INTO...ON DUPLICATE KEY语句.
SQLFiddle DEMO(注意,不添加多个重复值 - 所有其他值都是)
注意:
如果其中一个为NULL,则不会将其计为唯一.即使它们具有"相同"值(NULL实际上不是值),也可以将mykey'bar'和myfooNULL添加到无穷大.