java sql 递归查询_Sql递归查询

/*Sql递归查询*/

/*实际就是把所有树的节点查找出来

Oracle的一个表中也可以保存树形结构信息,用start with...connect by等关键字

eg:创建表并插入数据*/

Create table Tree(son char(10),father char(10));insert into tree (SON, FATHER) values ('孙子1', '儿子');insert into tree (SON, FATHER) values ('孙子2', '儿子');insert into tree (SON, FATHER) values ('儿子', '父亲');insert into tree (SON, FATHER) values ('父亲', '祖父');/*son father

孙子1 儿子

孙子2 儿子

儿子 父亲

父亲 祖父

数据结构是:

祖父

|

父亲

|

儿子

/ \

孙子1 孙子2*/

--查询以祖父为根节点的所有节点值

SELECT son from Tree START WITH father='祖父' CONNECT BY PRIOR son=father/*START WITH后的内容可以看成一个WHERE的限制条件,其中START WITH 是指定树的根

,还可以指定多个根,比如father in ('祖父','父亲');

CONNECTION BY PRIOR son=father相当于表明在递归过程中,查找到的树种其他节点接着

又作为根结点,然后继续递归。

只要记住 CONNECTION BY PRIOR那一行,要查询的列名放在前,根列名放等号后*/

--例:

--树形菜单结构

CREATE TABLEtb_menu(

idnumber(10) not null,--主键id

title varchar(50),--标题

parent number(10) --父菜单id

);--父菜单数据

insert into tb_menu(id,title,parent) values(1,'父菜单1',0);insert into tb_menu(id,title,parent) values(2,'父菜单2',0);insert into tb_menu(id,title,parent) values(3,'父菜单3',0);insert into tb_menu(id,title,parent) values(4,'父菜单4',0);insert into tb_menu(id,title,parent) values(5,'父菜单5',0);--一级子菜单

insert into tb_menu(id,title,parent) values(6,'一级子菜单6_1',1);insert into tb_menu(id,title,parent) values(7,'一级子菜单7_1',1);insert into tb_menu(id,title,parent) values(8,'一级子菜单8_1',1);insert into tb_menu(id,title,parent) values(9,'一级子菜单9_2',2);insert into tb_menu(id,title,parent) values(10,'一级子菜单10_2',2);insert into tb_menu(id,title,parent) values(11,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值