案例描述:

一张表(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是原数据表。

mysql 查询父子关系_递归查询具有父子关系的表相关推荐

  1. mysql查询无限下级_示例php+mysql查询实现无限下级分类树输出

    本文实例讲述了php+mysql查询实现无限下级分类树输出.分享给大家供大家参考,具体如下: 这里介绍的php结合mysql查询无限下级树输出,其实就是无限分类.给各位整理了几个php无限分类的例子. ...

  2. mysql 查询存储过程 速度_查询mysql过程

    MySql 使用explain分析查询 今天写了个慢到哭的查询,想用explain分析下执行计划,后来发现explain也是有局限性的: EXPLAIN不会告诉你关于触发器.存储过程的信息或用户自定义 ...

  3. mysql 查询时间转换_数据库查询时日期的转换

    首先简单说明一下,laravel框架中查询并打印sql语句的办法,不管任何时候由于sql语句报错时,都可以先打印一下,分析一下是什么原因造成的错误 ①引入laravel框架DB类useIllumina ...

  4. mysql查询会话池_用户会话,数据控件和AM池

    mysql查询会话池 最近,有人问我有关应用程序模块池的有趣问题. 众所周知,AM池包含用户会话引用的应用程序模块实例,这允许会话在后续请求时从池中获取完全相同的AM实例. 如果应用程序中有多个根应用 ...

  5. mysql查询自定义数据_实现自定义查询的数据库设计及实现(一)

    需求 先说一下需求:实现用户自定义的查询,用户可以自定义要查询的列.自定义条件条件.自定义排序.除了查询使用外,还可以使用于各个需要根据条件进行约束的业务,如权限: 本设计和实现,很大部分是通过数据库 ...

  6. php mysql查询中文乱码_解决php mysql查询插入中文乱码问题_PHP教程

    解决php mysql查询插入中文乱码问题 一.中文问题其实就是经统一编码了否则就会乱码 1.数据库与php页面编码统一 2.数据库数据表字段与页面编码统一 如果做到上面两种就不存在中文乱码问题了,那 ...

  7. java 类 关系_总结Java类关系

    什么是关系? 关系是指事物之间存在单向或双向的作用或者影响的状态.其中类与类之间要么有关系要么没关系,感觉这句话有点说的很无耻,谁都知道,但是其中奥妙在于很难确定类与类之间是否有关系.证明两个或者多个 ...

  8. mysql 查询编码转换_字符集介绍及mysql数据库编码转换

    一.字符集介绍: 1.ASCII ASCII是英文American Standard Code for Information Interchange的缩写,美国标准信息交换代码是由美国国家标准学会( ...

  9. mysql 查询临时表列名_为什么mysql会缓存被删除的临时表的列名?

    我已经将我的问题简化为这个简单的SP.列名在最后被缓存在SELECT *中.我不知道为什么或如何阻止它.我尝试添加SQL_NO_CACHE,但这没有什么区别. DROP TABLE IF EXISTS ...

  10. mysql 查询帖子 用户_我要用sql查询出来,我所发布的帖子和我关注的用户发布的帖子,这个sql该怎么写啊?...

    select t.*from talk twhere t.user_id = 2Unionselect t.*from talk t, user_contact cwhere c.user_id =  ...

最新文章

  1. <软件过程与改进>计算大题考点总结与例题
  2. 怎样操作vue.js使用3DES加密
  3. 使用火炬之光资源(转)
  4. 学习笔记(43):Python实战编程-事件处理简介
  5. 果断收藏!156页PPT全景展现全球区块链发展(附完整版下载手册)
  6. phpcmsV9重装 - 踩坑篇
  7. malloc/free与new/delete的使用要点
  8. Elasticsearch概念介绍文档路由与存储
  9. 决策树准确率低原因_决策树算法
  10. STM8L101+si4463低功耗和自动唤醒配置
  11. FFmpeg 视频裁剪
  12. python可以手眼定标吗_机器人无标定手眼协调
  13. 人类记忆系统之谜,或许是这样一回事
  14. 辅音字母组合功能音中的浊化现象
  15. 自定义CDH parcel
  16. php csv文件转json,php csv如何转json
  17. 初识C++之智能指针
  18. 网页如何快速设置成黑白模式
  19. 利用计算机教学的好处,计算机基础课程的重要性
  20. Linux环境开机自启动

热门文章

  1. word论文页码从任意页开始编号
  2. espeak 开源离线语音合成工具
  3. ESP8266-Arduino编程实例-SHT40温湿度传感器驱动
  4. mov文件如何转换成mp4?巧用嗨格式视频转换器
  5. Windows 7 with SP1简体中文专业版(微软MSDN原版)
  6. ORA-20011: Approximate NDV failed: ORA-00600: internal error code, arguments
  7. centos 官网下载
  8. python定义一个矩形类_矩形类Python
  9. python定义矩形类_Python3面向对象—点和矩形类
  10. 由于CSDN博客广告太多,本博客暂时停止更新