Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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_Sql_Insert Update - Fatal编程技术网

如何将忽略MySQL行插入另一个表,并在发现重复项时更新字段?

如何将忽略MySQL行插入另一个表,并在发现重复项时更新字段?,mysql,sql,insert-update,Mysql,Sql,Insert Update,我正在尝试制作一个电话营销活动管理web应用程序。 应用程序用户可以将Excel表格(包括电话号码+状态字段)上载到应用程序,并在打电话给客户时更新“状态”。上传Excel工作表时,所有数据都会进入一个名为“tp_numb”的表格。然后我创建了“MySQL insert ignore”,将数据从“tp_numb”复制到一个名为“ok_list”的表中。当发现重复项时,我需要更新“确定列表”表中的“状态”字段。如果未找到重复项,则应将数据插入“确定列表”表中 上面的代码是我一直在努力改进的代码,它

我正在尝试制作一个电话营销活动管理web应用程序。 应用程序用户可以将Excel表格(包括电话号码+状态字段)上载到应用程序,并在打电话给客户时更新“状态”。上传Excel工作表时,所有数据都会进入一个名为“tp_numb”的表格。然后我创建了“MySQL insert ignore”,将数据从“tp_numb”复制到一个名为“ok_list”的表中。当发现重复项时,我需要更新“确定列表”表中的“状态”字段。如果未找到重复项,则应将数据插入“确定列表”表中


上面的代码是我一直在努力改进的代码,它提供了一个更新“ok_列表”表中“status”字段的函数。因为电话号码的状态应该是上次上传Excel文件的状态。发现重复项时,如何更新状态?当找不到重复项时,我如何插入记录?

我想您希望
更新重复项时

INSERT INTO ok_list (tp_numb_id, number, status, ref_id)
    SELECT t.id, t.number, t.status, r.ref_id
    FROM tp_numb t JOIN
         reference r
         ON t.ref_id = r.ref_id
    ON DUPLICATE KEY UPDATE status = VALUES(status);
你的问题假设每个数字只有一行。我实际上不确定那是哪一列,但您应该有一个唯一的约束/索引,以便它知道哪一行的状态得到更新。我认为这是
tp\u numb\u id
,这将是

create unique index unq_ok_list_tp_numb_id on ok_list(tp_numb_id);
create unique index unq_ok_list_tp_numb_id on ok_list(tp_numb_id);