gpt4 book ai didi

从多个表中删除时MySQL查询问题

转载 作者:行者123 更新时间:2023-11-29 23:20:31 27 4
gpt4 key购买 nike

我有一个简单的数据库,如下所示。它将员工映射到他们所属的部门。当员工离职时,需要从 Employee 表和 EmployeeDepartment 表中删除其记录。同样,部门也可能发生变化。当部门发生更改时,需要从 DepartmentEmployeeDepartment 表中删除该记录。

我有一个大部分有效的查询。然而,当其他记录开始被删除时,我确实发现了一些错误。我希望有人可以帮我检查一下。

DELETE e, ed FROM Employee e 
INNER JOIN EmployeeDepartment ed ON e.id = ed.id
WHERE ed.id = ?

? 是我要删除的记录的 ID。

编辑

进一步解释一下,如果 ID 不在 EmployeeDepartment 中,则删除将不起作用。因此,如果员工已创建,但尚未分配到部门,则删除操作将不起作用。

最佳答案

这应该可以满足您的要求:

DELETE e, ed FROM Employee e 
LEFT JOIN EmployeeDepartment ed ON e.id = ed.id
WHERE e.id = ?

请注意,您必须与 Employee 匹配,因为您说 EmployeeDepartment 不保证有记录。

但是,我认为将其作为单个查询执行的理由为零。它增加了复杂性,但没有真正的好处。使用两个查询并将它们包装在一个事务中以使它们成为原子的。启动一个事务,从Employee中删除,然后从EmployeeDepartment中删除,然后提交。

关于从多个表中删除时MySQL查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27350871/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com