2013-04-15 41 views
1

我有一個存儲有關員工信息的表:查詢時有什麼方法可以替換列值嗎?

mysql> select * from emp; 

+-------+--------+-----------+------+------------+---------+---------+--------+ 
| EMPNO | ENAME | JOB  | MGR | HIREDATE | SAL  | COMM | DEPTNO | 
+-------+--------+-----------+------+------------+---------+---------+--------+ 
| 7369 | SMITH | CLERK  | 7902 | 1980-12-17 | 800.00 | NULL |  20 | 
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 |  30 | 
| 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 |  30 | 
| 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL |  20 | 
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 |  30 | 
| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850.00 | NULL |  30 | 
| 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450.00 | NULL |  10 | 
| 7788 | SCOTT | ANALYST | 7566 | 1982-09-12 | 3000.00 | NULL |  20 | 
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL |  10 | 
| 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 | 0.00 |  30 | 
| 7876 | ADAMS | CLERK  | 7788 | 1983-01-12 | 1100.00 | NULL |  20 | 
| 7900 | JAMES | CLERK  | 7698 | 1981-12-03 | 950.00 | NULL |  30 | 
| 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL |  20 | 
| 7934 | MILLER | CLERK  | 7782 | 1982-01-23 | 1300.00 | NULL |  10 | 
+-------+--------+-----------+------+------------+---------+---------+--------+ 
14 rows in set (0.24 sec) 

有一個名爲列MGR,說誰是每個員工的老闆(當然,老闆的EMPNO)。
我想要做的是向我顯示我所有的員工和他們的老闆的姓名,而不是ID的查詢。
結果表看起來像下面這樣:

+-------+----------+ 
| ENAME | BOSSNAME | 
+-------+----------+ 
| SMITH | FORD | 
| ALLEN | BLAKE | 
| etc. | etc. | 
+-------+----------+ 

有什麼辦法來完成任務? 請注意,沒有第二個名爲BOSSES的表,或類似的東西。每個員工都存儲在同一個表中。

回答

7

你需要加入表本身使用LEFT JOIN,所以沒有MGR全體員工將仍然可以在列表

SELECT a.Ename EmpName, 
     b.Ename BossName 
FROM emp a 
     LEFT JOIN emp b 
      ON a.MGR = b.EmpNo 

爲了進一步獲得更多的知識約聯接上顯示,請訪問以下鏈接:

輸出

╔═════════╦══════════╗ 
║ EMPNAME ║ BOSSNAME ║ 
╠═════════╬══════════╣ 
║ SCOTT ║ JONES ║ 
║ FORD ║ JONES ║ 
║ ALLEN ║ BLAKE ║ 
║ WARD ║ BLAKE ║ 
║ MARTIN ║ BLAKE ║ 
║ TURNER ║ BLAKE ║ 
║ JAMES ║ BLAKE ║ 
║ MILLER ║ CLARK ║ 
║ ADAMS ║ SCOTT ║ 
║ JONES ║ KING  ║ 
║ BLAKE ║ KING  ║ 
║ CLARK ║ KING  ║ 
║ SMITH ║ FORD  ║ 
║ KING ║ (null) ║ 
╚═════════╩══════════╝ 
相關問題