这不是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',我想插入一个新行。
这可以用一个陈述吗?
答案 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实际上不是值)。