oracle递归查询

    昨天一个哥们遇到了一个问题,问题的大意估计大家都应该遇到过了;大致如下:有一张表,包含各个邮政局的上下级别关系;

如,广州邮政的上级是广东邮政,广东的邮政的上级是中国邮政,而广州邮政的下级有天河邮政,越秀邮政 等,需求就是随便输入一个地方邮政的名字,输出他的所有上级或者下级(如如果输入的是广州邮政,要求他的上级的话,那么广东邮政,广东的邮政的上级也一并输出) 上网查了一下用oracle的递归查询可以解决 大致如下:

 

 

create table test_post(
name varchar2(50) primary key,
pareName varchar2(50)
);

insert into test_post(name,parename)values('中国邮政','最高了');
insert into test_post(name,parename)values('广东邮政','中国邮政');
insert into test_post(name,parename)values('广州邮政','广东邮政');
insert into test_post(name,parename)values('深圳邮政','广东邮政');
insert into test_post(name,parename)values('东莞邮政','广东邮政');
insert into test_post(name,parename)values('天河邮政','广州邮政');
insert into test_post(name,parename)values('白云邮政','广州邮政');
insert into test_post(name,parename)values('越秀邮政','广州邮政');
insert into test_post(name,parename)values('上社邮政','天河邮政');
insert into test_post(name,parename)values('棠下邮政','天河邮政');
insert into test_post(name,parename)values('东埔邮政','天河邮政');
insert into test_post(name,parename)values('人民北邮政','越秀邮政');
insert into test_post(name,parename)values('解放南邮政','越秀邮政');
insert into test_post(name,parename)values('流花路邮政','越秀邮政');
insert into test_post(name,parename)values('三元里邮政','白云邮政');
insert into test_post(name,parename)values('机场路邮政','白云邮政');
insert into test_post(name,parename)values('新市墟邮政','白云邮政');




 

执行
select   t.name   from   test_post   t   start   with   t.name='广州邮政'  
connect   by     prior parename=   name

就可以了

 

connect by 语法请参考http://hi.baidu.com/zy1193/blog/item/6126af247788763bc89559a9.html一文

 

比如 CONNECT BY PRIOR org_id = parent_id就是说上一条记录的org_id 是本条记录的parent_id,即本记录的父亲是上一条记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值