自连接是对同一个表进行的连接。要自行一个自连接,必须使用不同的表别名来标识在查询中每次对表的引用。现在考虑一个例子:store模式包含了一个名为employees的表,其中保存了员
自连接是对同一个表进行的连接。要自行一个自连接,必须使用不同的表别名来标识在查询中每次对表的引用。现在考虑一个例子:store模式包含了一个名为employees的表,其中保存了员工的信息。如果员工有管理者,那么manager_id列包含了员工的管理者的employee_id。employee_id表包含如下的行:
可以看到CEOJames Smith的manager_id列为空,这就是说他没有管理者(只对股东负责)。Fred Hobbs和Susan Jones都为Ron Johnson工作。
可以使用一个自连接来显示每个员工及其管理者的名字,在下面的例子中,employee表被引用了两次,分别使用了两个别名:w和m。别名w用于获得员工的名字,而别名m用于获得管理者的名字,自连接是对w.manager_id和m.employee_id进行的:
SELECT w.first_name ll' ' ll w.last_name II'work for' llm.first_name ll' ' llm.last_name
FROM employees w, employees m
WHERE w.manager_id= w. employee_id;
WHERE w.manager_id= w. employee_id;
W.FIRST_NAMEl I‘ ’ l IW.LAST_NAME I l ‘WORKSFOR' I IM.FIRST_NA
---------------------------------------------------------------------------
Ron Johnson works forJames Smith
Fred Hobbs works for Ron Johnson
Susan Jones works for Ron Johnson
---------------------------------------------------------------------------
Ron Johnson works forJames Smith
Fred Hobbs works for Ron Johnson
Susan Jones works for Ron Johnson
由于James Smith的manager_id列为空,因此不会为他显示任何行。