Sql server 在SQL Server 2008中使用自联接更新表
我有一个服务员。我需要使用excel工作表更新经理id(要从excel中获取值,我已在下面的查询中写入) 我写过这样的问题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' 但是它没有更新正确的值根据您告诉我们的内容,您根本不需要自动加入,也就是说,您可以直接更新
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