oracle树形查询

CREATE TABLE "T_FUNCTION"
  (
    "ID" VARCHAR2(32 CHAR) PRIMARY KEY NOT NULL ENABLE,
    "NAME"       VARCHAR2(50 CHAR) NOT NULL ENABLE,
    "PARENT_ID"  VARCHAR2(32 CHAR),
    CONSTRAINT "FK_C5438E4C3CE14B18944E16AB6F0" FOREIGN KEY ("PARENT_ID") REFERENCES "T_FUNCTION" ("ID") ENABLE
  )

插入测试数据:
Insert into T_FUNCTION (ID,PARENT_ID) values ('1',null);
Insert into T_FUNCTION (ID,PARENT_ID) values ('2',null);
Insert into T_FUNCTION (ID,PARENT_ID) values ('3','2');
Insert into T_FUNCTION (ID,PARENT_ID) values ('4','2');
Insert into T_FUNCTION (ID,PARENT_ID) values ('5','1');
Insert into T_FUNCTION (ID,PARENT_ID) values ('6','5');
Insert into T_FUNCTION (ID,PARENT_ID) values ('7','1');
Insert into T_FUNCTION (ID,PARENT_ID) values ('8','3');
Insert into T_FUNCTION (ID,PARENT_ID) values ('9','7');

树形查询关键词:connect by prior ... start with ...

select * from t_function f where 1=1 connect by prior f.id=f.parent_id start with f.id='1'

查询结果:
id   parent_id
1    null
5    1
7    1
6    5
9    7

猜你喜欢

转载自javahuhui.iteye.com/blog/2232364