这不是(精确)复制这个问题 https://stackoverflow.com/questions/4205181/insert-to-table-or-update-if-exists-mysql所以我开始了一个新的。
我有这个表(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' 时,我才想用 mybar = "333" 更新第 1 行ANDmyfoo = 'abc'
如果 mykey != '1.1'ORmyfoo != 'abc' 我想插入一个新行。
这可以用一个声明来实现吗?
MySQL 中的唯一索引不必位于单个列上。您只需在您的数据库中指定更多列即可在多个列上添加 UNIQUE 索引。ALTER TABLE..ADD UNIQUE
陈述:
ALTER TABLE myTable ADD UNIQUE (
mykey,
myfoo
);
现在您可以使用常规INSERT INTO...ON DUPLICATE KEY
陈述。
SQLFiddle 演示 http://sqlfiddle.com/#!2/43a5d/1/0 (请注意,多个重复值不会被添加 - 所有其他值都会被添加)
Note:
如果其中一个为 NULL,则会not被视为独一无二。mykey
成为“酒吧”并且myfoo
即使它们具有“相同”值(NULL 并不是真正的值),NULL 也可以添加到无穷大。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)