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