使用MYSQL数据库插入表或更新(如果存在)

时间:2014-04-10 05:56:40

标签: mysql

我有mysql数据库。我需要在我的桌子上更新国家列表。我桌上有一些国家。如果不存在,我需要检查该国家并插入表格。我使用以下sql脚本。但这不起作用。执行此代码时,它将复制记录。

MySQL查询:

INSERT INTO `moneyexpressstore`.`countries` (`Name`, `Code`, `CurrencyId`) VALUES
    ('Australia', 'au', NULL) ON DUPLICATE KEY UPDATE Name=VALUES(Name)

感谢,

3 个答案:

答案 0 :(得分:0)

查看mysql https://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

的文档
INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

答案 1 :(得分:0)

首先确保您的数据库在列countries上没有重复记录,然后执行此

CREATE UNIQUE INDEX countriesindex ON countries (Name(50))

50是索引搜索“唯一”值的字符数。例如,如果该数字为3,那么这两个不同的字符串将被视为相同,并且1062 Duplicate Entry会出现abcHELLO=abcWORLD错误,在您的情况下,它会强制UPDATE而不是INSERT {1}}。

如果您收到1062错误,则表示您的数据库中存在重复项,因此请将其删除并重试。

在此之后,您的查询将执行得很好并且将在“名称”

上更新而不是重复

答案 2 :(得分:0)

试试这个:

insert into `moneyexpressstore`.`countries` (id, `Name`, `Code`, `CurrencyId`) values(NULL,'Australia', 'au', NULL) on duplicate key update name=values(name)

请参阅此链接:

http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html