如何检查表中是否有另一条记录具有相同的唯一ID(列名为ID
),然后如果存在没有做任何事情,否则插入记录?
我是否需要将ID
列编入索引并将其设置为唯一/主键?
答案 0 :(得分:3)
一种选择是使用INSERT IGNORE
。顾名思义,它将INSERT不存在的行,并且它将对重复的行无效。
CREATE TABLE Table1 (
`id` int NOT NULL PRIMARY KEY,
`foo` varchar(20)
);
INSERT IGNORE INTO Table1
(`id`, `foo`)
VALUES
(1, 'a'),
(2, 'a'),
(3, 'a'),
(4, 'a'),
(1, 'a'),
(2, 'a'),
(1, 'a');
以上只会插入前4行。最后3行未插入,因为它们具有重复的键。
INSERT IGNORE
要求您拥有主键或唯一索引。
有关INSERT IGNORE
的更多信息(以及其他处理重复的方法):MySQL Handling Duplicates
答案 1 :(得分:1)
您可以将REPLACE
用作INSERT OR UPDATE
答案 2 :(得分:1)
如果您想要将其更改为在存在id alreadt时也执行某些操作,请参阅以下片段:
INSERT INTO table (key1, ...) VALUES (value1, ...) ON DUPLICATE KEY UPDATE dosomethingelse
因此,如果密钥已经存在,它将更新on duplicate key
之后的任何内容,否则它将插入之前的内容。