MYSQL从另一个表更新数据,如果存在,否则插入[重复]

Posted

技术标签:

【中文标题】MYSQL从另一个表更新数据,如果存在,否则插入[重复]【英文标题】:MYSQL update data from another table if exist else insert [duplicate] 【发布时间】:2020-05-09 10:29:51 【问题描述】:

我正在使用 mysql 数据库。我有一个以 id 作为主键的主表,具有(自动增量,非空,唯一)约束。


我的主桌:


在辅助表中我有相同的字段但没有 id 列


现在我需要使用以下条件从辅​​助表更新主表。

如果主表中存在用户数据,则应将其替换为辅助表数据并添加新行。 (例如:user1的第一行需要替换为副表数据,并且user1的新行需要添加到主表中)


预期输出:

我已尝试使用插入...重复更新。 它不起作用!有什么帮助吗?

【问题讨论】:

发布你的尝试! 在这里回答了类似的问题:***.com/questions/15383852/… 【参考方案1】:

尝试以下步骤。

步骤1:如果用户存在于第二个表中,则要替换主表中的数据,首先删除主表中存在于第二个表中的所有数据

delete from main_table where login_name in (select login_name from second_table);

第 2 步:

insert into main_table (login_name, mgr_name, ...)
select login_name, mgr_name,... from second_table

在第一步中,您将删除第二个表中存在的用户,在第 ​​2 步中,您将从 second_table 插入所有用户,因此您最终将在 main_table 中替换现有用户。

【讨论】:

感谢您的回答!但是在您的解决方案中,所有那些将更新主表中值的记录的主键值都会发生变化。 是的,我想过。那么从第二个表中,如果找到 user1 的 3 条记录,您将在主表中替换哪条记录?还有,你想用python还是纯SQL来实现? 看屏幕截图@Jones Kumar 希望第一个被替换为 3 个 是的,我知道。所以 user1 有 3 条记录,那么您如何确定他想用第 1 行、第 2 行或第 3 行替换它? 我不想严格替换记录,旧数据应该删除,新数据应该在那里。

以上是关于MYSQL从另一个表更新数据,如果存在,否则插入[重复]的主要内容,如果未能解决你的问题,请参考以下文章

WordPress 和 SQL - 如果列值不存在,则从另一个表更新和插入

mysql 先判断表中的某一字段 如果为空 插入数据 否则 更新该条数据

mysql 表中数据不存在则插入,否则更新数据

mysql - 如果不在另一个表中,则从一个表中选择,否则从另一个表中选择

MySQL更新如果存在否则插入

如果存在则如何更新,否则在php mysql中插入[重复]