代码之家  ›  专栏  ›  技术社区  ›  Ivan

在MySQL中,如何编写INSERT-INTO-VALUES查询,以便在已经存在具有相同主键值的记录的情况下自动丢弃它?

  •  0
  • Ivan  · 技术社区  · 14 年前

    我必须导入一大组可能包含重复项的记录。该表是一个MyISAM表,有一个复合主键,没有外键。如何指定如果表中已经存在插入的记录的主键值组合,它将丢弃特定的插入而不抛出错误或插入重复项?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Daniel Vassallo    14 年前

    你可以使用 IGNORE 关键字 INSERT 学生:

    Source )

    CREATE TABLE my_table (
       id int, name varchar(10), value int, PRIMARY KEY (id, name)
    );
    Query OK, 0 rows affected (0.03 sec)
    
    INSERT IGNORE INTO my_table (id, name, value) VALUES (1, 'a', 100),
                                                         (1, 'b', 200),
                                                         (1, 'b', 300);
    Query OK, 2 rows affected (0.00 sec)
    Records: 3  Duplicates: 1  Warnings: 0
    
    SELECT * FROM my_table;
    +----+------+-------+
    | id | name | value |
    +----+------+-------+
    |  1 | a    |   100 |
    |  1 | b    |   200 |
    +----+------+-------+
    2 rows in set (0.00 sec)
    
        2
  •  1
  •   Hammerite    14 年前

    你需要使用 IGNORE 关键字:

    INSERT IGNORE INTO ...
    

    LOAD DATA INFILE ... IGNORE ...
    

    here