EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 2000-12-17 800 Null 20
7902 FORD ANALYST 7566 1992-12-03 3000 Null 20
大家好,我有这种类型的桌子,我需要证明比公司经理收入更高的员工吗?如果我们有2个表,会更容易,但是我无法想象一个表中的代码。有什么想法吗?
答案 0 :(得分:0)
EMPNO
等于相应的MGR
值。Where
过滤掉员工薪水高于经理薪水的情况。尝试:
SELECT employee.*
FROM your_table_name AS employee
JOIN your_table_name AS manager ON manager.EMPNO = employee.MGR
WHERE employee.SAL > manager.SAL
与 @Strawberry suggested in comments一样,可以在联接条件本身中进行列比较(而不是使用Where
)。您也可以执行以下操作:
SELECT employee.*
FROM your_table_name AS employee
JOIN your_table_name AS manager ON manager.EMPNO = employee.MGR AND
employee.SAL > manager.SAL
这种方法的优点是我们必须从“内部联接”切换到“左联接”,查询所需的更改会更少。
答案 1 :(得分:0)
您应该使用自我加入
SELECT e1.EMPNO, e1.ENAME
FROM employee e1
JOIN employee mgr ON mgr.EMPNO = e1.MGR
WHERE e1.SAL > mgr.SAL
答案 2 :(得分:0)
select name as Employee
from Employee as t
where salary > (select salary from Employee where id=t.ManagerId);