搜索
当前位置: 大赢家官网 > 递归方法 >

sql 怎么递归查询的方法

gecimao 发表于 2019-04-25 21:11 | 查看: | 回复:

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部递归查询貌似只是oracle单独提供出来的。其他数据库没有提供递推查询吧。。。。

  我做第一个项目的时候就是用的start with connect by prior做的。没找到其他递归方法。。

  第二个项目的时候,这种树形结构有可能无限层,这个时候start with connect by prior也就不可靠了,速度慢。如果这个表可以新增一个字段,建议你加一个字段,当时我取名叫nodeIds,varchar类型的,用来存放父类的nodeIds+自己的id。

  比如说顶层部门的id为1,那么该部门的nodeIds就是,1,,然后他下一层部门id是2,则这个部门的nodeIds的值就是,1,2,....id是2的部门的下一层部门id为3的话,则这个部门的nodeIds的值就是,1,2,3,,这样的话,你就完全好查询的。。。通过传入id所对应的部门的nodeIds去like一下,就获得了他及其所有子部门。

  比如你要查id是1的所有子部门,那么你就拿,1,去数据库like一下,那么,1, ,1,2, ,1,2,3, 都拿出来了。。。后面两个肯定是前面那个的子部门。。。

  嗯,你说的这个方法貌似可行,但是使用like的查询的话,他是全表查询,如果表很大的话,会导致负载过大吧。start with connect by prior这个只用oracle有,其实我现在用的是jpql,jpql是不支持这个语法的,所以想找个别的方法。我想你这个方法还不错,谢了如果层数过多,这个应该算是一种较优的算法了,我反正还没见过比这个好的解决大量层递归查询的方法。这个方法当然也不是我想出来的,我还没那么大本事。这个算法在10亿条数据之内绝对不可能慢的。因为我一个朋友是在一个数据量相当庞大的公司工作的(这个公司我不方便透露),这个想法就是从他那里借鉴的,他们都是采用新增一个字段代替递归查询。

  知道合伙人教育行家采纳数:6342获赞数:126654本人毕业于河西学院计算机系,本科学位,自2008年毕业以来任九年级数学教师至今。向TA提问展开全部sql 递归查询的方法:

本文链接:http://miamiaccounting.net/diguifangfa/208.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部