避免在mySQL中插入重复的行

时间:2012-01-06 10:50:40

标签: mysql database

我有一个auto_inc id(主键)的表。 我试图避免插入重复的行。

重复行的示例:

id  | field a | field b | field c |
1       4          6         7
2       4          6         7

密钥(id)不重复,因为它是由MySQL自动生成的,但所有其他字段都是相同的。

4 个答案:

答案 0 :(得分:12)

在字段a,b,c上创建唯一索引。

ALTER TABLE `table` ADD UNIQUE (
`a` ,
`b` ,
`c`
);

答案 1 :(得分:8)

您应该使用ON DUPLICATE KEY UPDATE并将字段声明为唯一。

  

如果指定ON DUPLICATE KEY UPDATE,则插入一行   会导致UNIQUE索引或PRIMARY KEY中的重复值   执行旧行的更新。

答案 2 :(得分:4)

您也可以使用它。

INSERT INTO `tableName` ( `field1`, `field2`,`field3`)
SELECT `field1`, `field2`,`field3` FROM `tableName`
WHERE NOT EXISTS (SELECT 1
    FROM `tableName`
    WHERE 
    `field1` = 'value' AND `field2` = 'value'  AND `field3` = 'value'
    );

答案 3 :(得分:-2)

使三列复合键。