递归查询:
with recursive tmp_emp as (
select
employee_id,
manager_id,
full_name
from employees where employee_id=2 --开始递归时,tmp_emp的数据即为此sql的结果集。
union all
select
e.employee_id,
e.manager_id,
e.full_name
from employees e
inner join tmp_emp t on t.employee_id=e.manager_id
)
select * from tmp_emp;
创建递归视图:
即把递归查询的tmp_emp替换为视图名
create recursive view employ_manager (employee_id,manager_id,full_name) as
select
employee_id,
manager_id,
full_name
from employees where employee_id=2 --开始递归时,tmp_emp的数据即为此sql的结果集。
union all
select
e.employee_id,
e.manager_id,
e.full_name
from employees e
inner join employ_manager t on t.employee_id=e.manager_id;
select * from employ_manager;
employees源表.png
递归视图结果.png