我有一个auto_inc
id(主键)的表。
我试图避免插入重复的行。
重复行的示例:
id | field a | field b | field c |
1 4 6 7
2 4 6 7
密钥(id
)不重复,因为它是由MySQL自动生成的,但所有其他字段都是相同的。
答案 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)
使三列复合键。