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'

ただし、従業員の 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 に答える