天天看点

oracle、子句实现递归查询

直接上代码:

    表:resource_types(id, father_type_id,name)

    select  t.id resource_type_id,      

   SUBSTR(translate(SYS_CONNECT_BY_PATH(translate(t.name,'-','tmp_'),'-'),'tmp_','-'),2) resource_type_name          

   from resource_types t    

   start with t.father_type_id is null          

   connect by t.father_type_id = prior t.id

结果集:

resource_type_id   resource_type_name

2                            黑色金属矿产品

3                            黑色金属矿产品-铁矿石

4                            黑色金属矿产品-铁矿石-磁铁矿

5                            黑色金属矿产品-铁矿石-赤铁矿

6                            黑色金属矿产品-铁矿石-褐铁矿

7                            黑色金属矿产品-铁矿石-菱铁矿

8                            黑色金属矿产品-锰矿石

9                            黑色金属矿产品-锰矿石-水锰矿

10                          黑色金属矿产品-锰矿石-褐锰矿

11                          黑色金属矿产品-锰矿石-软锰矿

12                          黑色金属矿产品-锰矿石-硬锰矿