mysql ON CONFLICT IGNORE

时间:2017-02-07 23:04:22

标签: mysql

我从sqlite3开始,现在必须切换到mysql。我的sqlite3的创建表代码结构是

CREATE TABLE IF NOT EXISTS players(
          "Name" TEXT,
          "B/T" TEXT,
          "Ht" TEXT,
          "Wt" TEXT,
          "DOB" TEXT,         
          UNIQUE (Name, DOB) ON CONFLICT IGNORE);

我使用的是一个python脚本,它从data_frame追加到db.table。 UNIQUE,ON CONFLICT IGNORE以我需要的方式工作,从不附加重复项。我的问题是我似乎无法让它在mysql中工作。我一直在寻找关于如何从mysql中的那一行得到相同结果的任何想法。我当前的mysql行出错:

CREATE TABLE IF NOT EXISTS players(              
          Name VARCHAR(30),
          `B/T` VARCHAR(5),
          Ht VARCHAR(5),
          Wt VARCHAR(5),
          DOB VARCHAR(11),
          UNIQUE (Name, DOB) ON CONFLICT IGNORE);

任何解决方案或批评都非常感谢!

1 个答案:

答案 0 :(得分:1)

在MySQL中,您可以自行决定如何处理重复项。 INSERT IGNORE ...是处理此问题的首选方式。

请注意,UNIQUE索引不会触发NULL值,因为NULL=NULL为false。