2012-07-16 84 views
2

我有一个名为employee的表,其ID为主键列,并且有一个名为supervisorID的列,该列是引用回引用同一个表的人的名称。我想显示supervisorID作为其引用的人员名称而不是ID。显示引用名称,而不是同一个表中的ID

我想从表员工中选择*,但引用SupervisorID作为同一个表中的人员姓名。

回答

6
SELECT e.ID, e.name AS Employee, s.name AS Supervisor 
FROM employee e 
    INNER JOIN employee s 
    ON s.ID = e.supervisorID 
ORDER BY e.ID; 

这里是如何测试这个更多的颜色:

mysql> CREATE TABLE employee (ID INT NOT NULL AUTO_INCREMENT, supervisorID INT NOT NULL DEFAULT '1', name VARCHAR(48) NOT NULL, PRIMARY KEY (ID)); 
Query OK, 0 rows affected (0.01 sec) 


mysql> INSERT INTO employee VALUES (1, 1, "The Boss"), (2,1, "Some Manager"), (3,2, "Some Worker"), (4,2, "Another Worker"); 
Query OK, 4 rows affected (0.00 sec) 
Records: 4 Duplicates: 0 Warnings: 0 


mysql> SELECT e.ID, e.name AS Employee, s.name AS Supervisor 
FROM employee e INNER JOIN employee s 
ON s.ID = e.supervisorID ORDER BY e.ID; 
+----+----------------+--------------+ 
| ID | Employee  | Supervisor | 
+----+----------------+--------------+ 
| 1 | The Boss  | The Boss  | 
| 2 | Some Manager | The Boss  | 
| 3 | Some Worker | Some Manager | 
| 4 | Another Worker | Some Manager | 
+----+----------------+--------------+ 
4 rows in set (0.01 sec) 

mysql> 
0

喜欢的东西:

SELECT e.name as 'employee name', supervisors.name as 'supervisor name' 
FROM employee e 
INNER JOIN employee supervisors ON e.ID = supervisors.supervisorID 
0

做自联接基础上的ID

select e.*, s.name 
from 
    employee e 
    inner join employee s 
    on e.supervisorid = s.id 
相关问题