Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在重复密钥更新时插入。。。。。有两个关键字段_Mysql - Fatal编程技术网

Mysql 在重复密钥更新时插入。。。。。有两个关键字段

Mysql 在重复密钥更新时插入。。。。。有两个关键字段,mysql,Mysql,我有一个有三个字段的表 第一场 第二场 第三场 我想进行插入/更新,但我需要检查(field_one,field_two)组合是否已经存在于数据库中,而不是检查其中一个关键字段是否已经存在,如果已经存在,则进行更新而不是插入 有多种方法可以做到这一点。最简单的可能是这样的: 获取现有字段 插入所有不在现有字段中的字段 更新其余的 在表上创建您的索引名的唯一索引(字段1、字段2)()并使用 MySQL将自动完成其余的操作。我觉得您可以使用替换为或进行重复密钥更新,只要这两个字段上有唯一的约束 M

我有一个有三个字段的表

第一场 第二场 第三场


我想进行插入/更新,但我需要检查(field_one,field_two)组合是否已经存在于数据库中,而不是检查其中一个关键字段是否已经存在,如果已经存在,则进行更新而不是插入

有多种方法可以做到这一点。最简单的可能是这样的:

  • 获取现有字段
  • 插入所有不在现有字段中的字段
  • 更新其余的
在表上创建您的索引名的唯一索引(字段1、字段2)
()并使用


MySQL将自动完成其余的操作。

我觉得您可以使用
替换为
进行重复密钥更新
,只要这两个字段上有唯一的约束


MySql不支持MERGE语句,因此需要一个唯一的约束或一些外部代码。

障碍是什么?您刚刚在问题标题中写下了需要使用的内容。@Alin Purcaru:唉,关于多列索引的知识还是有点不常见(我知道当我被显示时,我说了“你能做到吗?!”)。警告:重复时,替换的行为类似于删除+插入,而插入。。。更新的行为类似于更新(对于触发器、自动递增字段和默认值很重要)