博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归查询具有父子关系的表
阅读量:6516 次
发布时间:2019-06-24

本文共 553 字,大约阅读时间需要 1 分钟。

    案例描述:

    一张表(r),有字段m,p , 其中字段m的值可以出现在字段p中,字段p的值也可以出现在m中,根据指定字段p的值,查询字段m的值集,然后将字段m的值集作为字段p的值进行递归查询,直到结果集大小为0。

   下面是一个简单的表(r)结构示例图:

   

    看到上面的表结构,让人很容易想到树形结构,不过上图并不是一个严格意义上的树形结构。

    严格的树形结构是:根节点+子节点+叶子节点,其中根节点无父节点,子节点有子节点和父节点,叶子节点只有父节点。能够根据具一个节点查出所有的叶子节点,注意实际使用中往往字段m的值是唯一的。

   问题:查询出p=2的所有m值,再以m的值作为p的值进行递归查询。

   按照问题描述可以看出:

   p=2 查出 m=(4, 6)

   p=(4, 6)查出 m=(7, 7)

   p=m 无结果为止。

   PostgreSQL中的递归查询可以实现此功能:

 

WITH RECURSIVE v AS (    SELECT r."m", r."p" from r where r."p"='2'    UNION ALL    SELECT r."m", r."p" from  r INNER JOIN  v on r."p"=v."m")select * from v;

 说明:v作为结果集表,r是原数据表。

转载地址:http://vxafo.baihongyu.com/

你可能感兴趣的文章
[SAP ABAP开发技术总结]权限对象检查
查看>>
RDIFramework.NET ━ 9.6 模块(菜单)管理 ━ Web部分
查看>>
Android安全问题 静音拍照与被拍
查看>>
cocos2d-x 3.1.1 学习笔记[13] listen 监听器
查看>>
定制私人博客
查看>>
WTL介绍
查看>>
应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较(转)
查看>>
放量滞涨,抛出信号
查看>>
windows 下配置 Nginx 常见问题(转)
查看>>
BeanFactory not initialized or already closed - call 'refresh' before accessing beans解决办法
查看>>
dSYM 文件分析工具
查看>>
R语言合并data.frame
查看>>
linux主机下的Vmware Workstation配置NAT设置 端口映射-Ubuntu为例
查看>>
unity physics joint
查看>>
TD的访问地址
查看>>
JAVA常见面试题之Forward和Redirect的区别
查看>>
tmpFile.renameTo(classFile) failed 错误
查看>>
【甘道夫】Apache Hadoop 2.5.0-cdh5.2.0 HDFS Quotas 配额控制
查看>>
一张图看懂normal,static,sealed,abstract 的 区别
查看>>
Task的使用
查看>>