数据中可能存在层次关系,本文章主要介绍查询这种关系的实例。会大量使用递归式 CTE。
Emps 表中 EName 员工和 MGR 上级之间的关系如下:
每个上级也同样是员工,主管和员工之间为父子关系。
1.呈现父子关系
情景:返回员工数据的同时返回上级信息(名字,角色,薪水)。如下:
解决方案:基于 MGR 和 EName 相等自连接,找出每个员工上级的数据即可解决。
SELECT a.EName 员工名,a.MGR 上级,b.SAL 上级薪水,B.Role 上级角色 FROM test.emps a left join test.emps b on a.MGR = b.EName
也可以使用标量子查询,注意标量子查询只能返回一列。
select a.EName 员工名, (select b.EName FROM test.emps b where b.