MySQL更新与多个连接到同一个表的查询

MySQL更新与多个连接到同一个表的查询

问题描述:

在我现有的项目数据库(MySQL)中,有两个表Employee和EmployeeReference。MySQL更新与多个连接到同一个表的查询

enter image description here

Employee表中具有可以是员工(或)管理器

每个管理器将有一个参考代码和角色列它们是否指的是将被存储在EmployeeReference表雇员。他还将在EmployeeReference表中记录他自己的参考代码。

现在我们要更新EmployeeReference表中的此Reference Code列,其中包含mangidager的EmployeeID而不是现有的参考代码。

如何做到这一点更新MySQL中使用多个连接在同一个表中的查询? 任何帮助是高度赞赏。谢谢 !

+0

发布您的查询。 – sagi

+0

为什么不将经理代码存储在员工类型列中?然后,经理只是一个没有(即NULL)经理代码 – Strawberry

尝试下面的查询,以获得预期的结果

SELECT er.* 
FROM EmployeeReference er 
LEFT JOIN Employee e 
ON UPPER(Name) LIKE SUBSTRING(er.RefCode,1,3)+'%' 
    AND e.Role = 'MNG' 
    AND e.EmpID <> er.EmpID; 

注:根据上面的查询写你的更新查询

希望这会帮助你的。

如果我正确理解这个问题,那么下面的查询可以工作。它可以进一步优化。

SELECT * FROM `EmployeeReference` c INNER JOIN (SELECT a.RefCode,a.EmpId FROM `EmployeeReference` a INNER JOIN Employee b ON a.EmpID = b.EmpId WHERE b.Role = 'MNG') d ON c.RefCode = d.RefCode 

UPDATE `EmployeeReference` c INNER JOIN (SELECT a.RefCode,a.EmpId FROM `EmployeeReference` a INNER JOIN Employee b ON a.EmpID = b.EmpId WHERE b.Role = 'MNG') d ON c.RefCode = d.RefCode SET c.RefCode = d.EmpId 
+1

的员工谢谢!这就像一个魅力,但不会更新除'MNG'/'EMP'之外的角色的少数几行,......例如,还有另一个角色'ADM',它也被'MNG'之一引用 – Technoster