【问题标题】:how do i insert multiple values in mysql and avoid duplicates如何在mysql中插入多个值并避免重复
【发布时间】:2011-05-13 08:58:30
【问题描述】:

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

表架构是

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。

【问题讨论】:

    标签: mysql insert duplicates


    【解决方案1】:

    您想将UNIQUE 约束添加到您的表中。如果您单独写出UNIQUE 约束,那么如何将其应用于任意列组合就会变得更加清晰。

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

    【讨论】:

      【解决方案2】:

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

      表定义示例

      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-3 分钟。 Stackoverflow 有时就像闪电一样。
      • 没问题,就像做填字游戏一样,更好。它对某人来说很有趣、复杂和有用,太棒了!
      • @daniel:请不要忘记接受答案,到目前为止,您接受的答案只有 0%,也就是说,回答您的问题不太刺激。阅读常见问题解答:stackoverflow.com/faq
      【解决方案3】:

      现在添加约束:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多