Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server 2008中使用自联接更新表_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 在SQL Server 2008中使用自联接更新表

Sql server 在SQL Server 2008中使用自联接更新表,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一个服务员。我需要使用excel工作表更新经理id(要从excel中获取值,我已在下面的查询中写入) 我写过这样的问题 UPDATE Employee SET ManagerID = Emp_ID from Employee inner join Employee AS MGR on Employee.emp_id=MGR.emp_id WHERE emp_code='1111' 但是它没有更新正确的值根据您告诉我们的内容,您根本不需要自动加入,也就是说,您可以直接更新

我有一个服务员。我需要使用excel工作表更新经理id(要从excel中获取值,我已在下面的查询中写入)

我写过这样的问题

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

但是它没有更新正确的值

根据您告诉我们的内容,您根本不需要自动加入,也就是说,您可以直接更新员工的经理id

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

但是,如果您的意思是只需要在给定员工的emp_代码和经理的emp_代码的情况下执行更新(即没有经理的PK),则可以使用子查询(不相关),例如

如果以后需要添加一个显示员工及其经理的查询(并假设最终上司没有经理),可以这样进行自联接:

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

您是否已将excel的值存储在表中?如果是,表的结构是什么?
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