我如何在mysql中插入多个值,避免重复

时间:2011-05-13 00:47:05

标签: mysql insert duplicates

如何插入多行或值,并避免在以下架构中重复。

表架构是

id,subject1,subject2,subject3

id自动递增。
副本将是所有subject1,subject2,subject3已经以完全相同的顺序存在于记录中的位置。

INSERT INTO "table_name" ("subject1","subject2","subject3")  
VALUES ("cats", "dogs", "hamsters")  
VALUES ("squirrels", "badgers", "minxes")  
VALUES ("moose", "deer", "ocelots") 

在表中,假设我已经有

的记录
id,subject1,subject2,subject3
1,"cats", "dogs", "hamsters"

所以我希望它只是插入

VALUES ("squirrels", "badgers", "minxes")  
VALUES ("moose", "deer", "ocelots")

我已经看到了关于避免单个项目重复的答案,但不是3个。

3 个答案:

答案 0 :(得分:2)

您想要将UNIQUE约束添加到表中。如果单独编写UNIQUE约束,则可以更清楚地将其应用于任意列组合。

CREATE TABLE table_name (
    subject1 VARCHAR(30),
    subject2 VARCHAR(30),
    subject3 VARCHAR(30),
    UNIQUE (subject1, subject2, subject3)
);

答案 1 :(得分:1)

您需要在三列上使用唯一键。

表定义示例

CREATE TABLE `table_name` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'PK',
  `subject1` varchar(64) NOT NULL,
  `subject2` varchar(64) NOT NULL,
  `subject3` varchar(64) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `subjects` (`subject1`,`subject1`, `subject3`)
) ENGINE=InnoDB

答案 2 :(得分:0)

现在添加约束:

ALTER TABLE {tablename}
ADD CONSTRAINT {constraintname} UNIQUE (subject1, subject2, subject3)