MySQL |如果字段存在,则更新插入插入的插入

时间:2016-11-17 21:01:43

标签: mysql sql insert

我有一个包含三个字段的表:

  • 自动增量整数(主键)
  • 应该是唯一的字符串
  • 包含非唯一值的整数

见图: enter image description here

整数字段的值不必是唯一的。

我的问题: 我从API中提取数据并将字符串和第三个字段(整数)插入表中。目前我正在截断表并再次插入以避免重复。我如何做到这一点,如果字符串存在,它只更新第三个字段(整数),如果它不存在,它将正常插入行。

我知道ON DUPLICATE KEY技术,但我的'key'是主键,我想检查重复的字符串字段。

2 个答案:

答案 0 :(得分:4)

如果字符串字段应该是唯一的,则将其声明为唯一:

alter table add constraint unq_table_string unique (string);

然后,on duplicate key会在违反此约束时找到匹配项。

答案 1 :(得分:0)

您可以尝试以下查询 -

ALTER IGNORE TABLE `your_table`
ADD UNIQUE INDEX (`hash_name` );

这将为您的表添加唯一索引并删除所有重复的hash_name,并确保将来不会插入重复的hash_name。