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

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


我的主桌:


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


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

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


预期输出:

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

【问题讨论】:

标签: python mysql sql database mysql-python


【解决方案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 行替换它?
  • 我不想严格替换记录,旧数据应该删除,新数据应该在那里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 1970-01-01
  • 2016-12-10
相关资源
最近更新 更多