MySQL更新与多个连接到同一个表的查询
问题描述:
在我现有的项目数据库(MySQL)中,有两个表Employee和EmployeeReference。MySQL更新与多个连接到同一个表的查询
Employee表中具有可以是员工(或)管理器
每个管理器将有一个参考代码和角色列它们是否指的是将被存储在EmployeeReference表雇员。他还将在EmployeeReference表中记录他自己的参考代码。
现在我们要更新EmployeeReference表中的此Reference Code列,其中包含mangidager的EmployeeID而不是现有的参考代码。
如何做到这一点更新MySQL中使用多个连接在同一个表中的查询? 任何帮助是高度赞赏。谢谢 !
答
尝试下面的查询,以获得预期的结果
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
发布您的查询。 – sagi
为什么不将经理代码存储在员工类型列中?然后,经理只是一个没有(即NULL)经理代码 – Strawberry