查找薪水高于 his/her 经理的员工的薪水的查询是什么?

What is the query to find the salary of employees having more salary than his/her manager?

假设下面有一个table

员工 ID 员工姓名 经理ID 员工工资
1 ABC 2 1000
2 防御 3 2000
10 GHI 11 5000
3 JKL 4 1000

现在我们知道 EmpID = 2 应该是输出,因为它的薪水比它的经理高。

但是我们可以编写什么查询来获得此输出?我真的很困惑

WITH CTE(EmpID,     EmpName,    ManagerID,  EmpSalary) AS
 (

    SELECT 1,   'ABC' , 2 , 1000 UNION ALL
    SELECT 2 ,  'DEF' , 3 , 2000  UNION ALL
    SELECT 10 , 'GHI'   ,11 ,   5000  UNION ALL
    SELECT 3 ,  'JKL' , 4 , 1000
 )
 SELECT T.EmpID,T.EmpName,T.ManagerID,T.EmpSalary,T2.EmpSalary AS MANAGER_SALARY
 FROM CTE AS T
 JOIN CTE AS T2 ON T.ManagerID=T2.EmpID
 --WHERE T.EmpSalary>T2.EmpSalary

这称为“自连接”。上述代码中的 CTE 代表您 table 的数据。 请看一下 table 如何与自身结合(我评论了 WHERE 条件)以显示员工的经理的薪水