PostgreSQL递归视图

递归查询:
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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容