0

我只是想在 sql 文件中插入一些插入以导入某个 sql 数据库,因为当寄存器存在时我得到一个错误,所以如果寄存器存在,我不想做任何事情(不要插入),因此我有试过

INSERT INTO menu VALUES('Arsenal FC','?team=arsenal fc')
ON DUPLICATE KEY IGNORE '*already inserted*';

或者IF NO EXISTS INSERT INTO menu Values('Arsenal FC','?team=arsenal fc');

我也听说过重复密钥更新,但我不想更新只是想在存在时不插入。

4

2 回答 2

0

怎么样:

INSERT IGNORE INTO menu VALUES('Arsenal FC','?team=arsenal fc');

如此处所述:http: //dev.mysql.com/doc/refman/5.5/en/insert.html

于 2013-03-25T17:52:20.860 回答
0

如果您想忽略所有现有数据,那么有两种最常用的方法。

  1. 使用INSERT IGNORE 之类的

    INSERT IGNORE INTO menu VALUES('Arsenal FC','?team=arsenal fc');

  2. 使用“ ON DUPLICATE KEY UPDATE ”之类的

    INSERT INTO menu VALUES('Arsenal FC','?team=arsenal fc') ON DUPLICATE KEY UPDATE key=key

    //注意:我假设 key 是你的唯一或主键约束。

但我建议您采用第二种方式,即ON DUPLICATE KEY UPDATE,因为使用INSERT IGNORE 会忽略所有错误(即它是一个草率的全局忽略)。如果导致重复键,则不会实际插入该行。但该语句不会产生错误。它会生成一个警告。最重要的是,如果您的表没有任何键约束,那么您需要使用唯一键或主键更改表。

于 2013-03-25T18:35:02.207 回答