平台: MySQL Workbench 8.0 CE SQL: 5.5.57
我在为下列任务创建适当的语句时遇到了困难:
假设我们有一张桌子“部门”
| 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 = 5,并将它们替换为新的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);提前谢谢。
发布于 2022-04-28 15:51:53
首先,我想您必须识别插入的最后一个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;https://stackoverflow.com/questions/72046393
复制相似问题