如何循环来自同一个表的值?

时间:2014-02-12 19:54:15

标签: mysql sql-server

我想从这个表中找到员工的经理名称(表中有某些用户是经理,对于他们来说,emp_mgr将为null,因为特定经理下的员工将由经理的员工编号填充

  CREATE TABLE EMP (
     EMP_NUM        INTEGER PRIMARY KEY,
     EMP_TITLE  CHAR(10),   
     EMP_LNAME  VARCHAR(15) NOT NULL,
     EMP_FNAME  VARCHAR(15) NOT NULL,
     EMP_INITIAL    CHAR(1),
     EMP_DOB        DATETIME,
     EMP_HIRE_DATE  DATETIME,
     EMP_AREACODE   CHAR(3),
     EMP_PHONE  CHAR(8),
     EMP_MGR        INTEGER);

我试图寻找使用以下人员的经理,但我无法做到

select * from EMP where emp_mgr='' (I am unable to get the data) This is because Managers have no emp_mgr and it would be generally null

2 个答案:

答案 0 :(得分:1)

您可以使用自我加入来执行此操作:

SELECT e1.emp_num, e1.emp_lname as employee_last_name, e2.emp_lname as manager_last_name
from emp e1
LEFT JOIN emp e2 ON e1.emp_mgr = e2.emp_num

当员工是经理时,e2值将为NULL

答案 1 :(得分:0)

嗯......如果你只想要一份高层管理人员名单(没有其他经理人)那么这个:

select * from EMP where emp_mgr is null;

你也可能会嵌套这样的东西:

select * from emp where emp_num in ( select emp_mgr from emp );