0

我有表员工。我需要使用 excel 表更新经理 ID(要从我在查询下面写的 excel 中获取值)

Employee

Emp_ID  Emp_Code Name  ManagerID
1       1111     xyz    2
2       2222     abc    3
3       3333     mno    2

我写过这样的查询

UPDATE Employee  SET ManagerID = Emp_ID   from Employee  inner join  Employee AS MGR 
on Employee.emp_id=MGR.emp_id    WHERE  emp_code='1111'

但它没有更新正确的值

4

1 回答 1

1

根据您告诉我们的情况,您根本不需要自我加入,即您可以直接更新员工的经理 ID

UPDATE Employee  
    SET ManagerID = 2 
    WHERE  emp_code='1111'

ETC

但是,如果您的意思是只需要根据员工的 emp_code 和经理的 emp_code 执行更新(即没有经理的 PK),那么您可以使用子查询(不相关),例如

UPDATE Employee  
    SET ManagerID = (SELECT manager.Emp_Id 
                       FROM Employee manager 
                       WHERE manager.emp_code = '2222') -- Manager's emp_code
    WHERE  emp_code='1111' -- Employee to update's emp_code

如果您稍后需要添加一个显示员工和他/她的经理的查询(并假设最终老板没有经理),您可以像这样进行自我加入:

SELECT emp.emp_code as EmployeeCode, emp.name as EmployeeName, 
       mgr.emp_code as ManagerEmpCode, mgr.name as ManagerName
FROM Employee emp 
   LEFT OUTER JOIN Employee mgr 
   ON emp.ManagerId = mgr.Emp_Id
于 2012-08-02T06:30:47.417 回答