您的位置:首页 > 数据库 > Oracle

Oracle 级联查询

2012-05-15 22:46 316 查看
create table t_task (
task_id  number(11) primary key,
task_name  varchar2(20),
parent_task_id number(11)
)
insert into t_task (task_id,task_name,parent_task_id) values(000001,'t1',-1);
insert into t_task (task_id,task_name,parent_task_id) values(000002,'t11',000001);
insert into t_task (task_id,task_name,parent_task_id) values(000003,'t2',000001);
insert into t_task (task_id,task_name,parent_task_id) values(000004,'t111',000002);
insert into t_task (task_id,task_name,parent_task_id) values(000005,'t1111',000003);
insert into t_task (task_id,task_name,parent_task_id) values(000006,'t121',000005);
insert into t_task (task_id,task_name,parent_task_id) values(000007,'t1211',000006);

select * from t_task;

--查询所有有关联的数据
select t.task_id, t.task_name, t.parent_task_id
from t_task t
start with task_id = 3
connect by prior task_id = parent_task_id;

--查询所有父节点数据包含自身
select * from t_task start with task_id=3 connect by prior parent_task_id=task_id  ;

--查询所有子节点数据不包含自
select t.*,level from t_task t start with parent_task_id=3 connect by prior task_id=parent_task_id ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: