自连接是指在同一张表的连接查询
? 显示员工的上级领导的姓名,比如显示‘FORD’的上级
①查询出FORD这个人的上级编号:
select mgr from emp where ename='FORD';
②显示上级的信息:
select * from emp where empno=(select mgr from emp where ename='FORD');
扩展要求
? 显示各员工的姓名和他的上级领导姓名
思路:把emp表看做两张表(worker,boss)
select worker.ename,boss.ename from emp worker,emp boss where worker.mgr=boss.empno;
疑惑:这里我们看到KING没有显示,因为KING没有上级,如果我们希望把没有上级的人也显示出来,则需要使用外连接。
select worker.ename,boss.ename from emp worker,emp boss where worker.mgr=boss.empno(+);