MySQL:识别重复项并替换值 - 初学者

MySQL: Identify duplicates and replace values - beginner

平台: MySQL Workbench 8.0 CE SQL: 5.5.57

我无法为以下任务创建正确的语句:

假设我们有一个 table 'departments'

| id | name | superior_dep_id |
_______________________________
  1  | SM   |  null          
  2  | SMT  |  1      
  3  | SMTE |  2 
  4  | SMI  |  1      
  5  | SM   |  null 

我刚刚添加了一个新部门'SM',它将取代旧部门,仅在有效性方面,所以旧部门仍然保持不变。

现在我需要确定所有部门,其中包含位于 departments.superior_dep_id 的旧 departments.id,并将它们替换为新的 departments.id = 5

| id | name | superior_dep_id |
_______________________________
  1  | SM   |  null          
  2  | SMT  |  1      <--- 5
  3  | SMTE |  2 
  4  | SMI  |  1      <--- 5
  5  | SM   |  null   <--- INSERT INTO 
                           departments(id, name, superior_dep_id) 
                           VALUES(5, SM, null);

提前致谢。

首先,我想您必须识别最后插入的 departments.id 名称,跳过您插入的最后一个:

select departments.id from departments where name = 'SM' and departments.id <> 5 ORDER BY departments.id DESC LIMIT 1;

获得 departments.id(将为 1)后,您可以更新字段:

update departments set superior_dep_id = 5 where superior_dep_id = 1;