SQL:给出收入比其经理高的员工的姓名

时间:2018-10-13 13:42:19

标签: mysql sql database

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个表,会更容易,但是我无法想象一个表中的代码。有什么想法吗?

3 个答案:

答案 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);