一、根据叶子节点的某个id查询往上查询
SELECT d3.*
FROM (
SELECT @r AS id,
(SELECT @r := parent_id FROM department WHERE id = @r) AS tmp_parent_id
FROM (SELECT @r := 9) leafNodeId,
department hd) d2
INNER JOIN department d3 ON d2.id = d3.id AND d2.tmp_parent_id is not null
ORDER BY d3.id

1、语句说明
(1)@r := 9是叶子节点id赋值,此处可以改成普通查询赋值的方式,比如按名称查询id

SELECT @r := id from department leaf where leaf.name = ‘后台一组一分队’

二、根据父节点id往下查询所有的子节点
SELECT d2.*
FROM (
SELECT t1.id,
IF(find_in_set(t1.parent_id, @pids) > 0, @pids := concat(@pids, ‘,’, t1.id), 0) AS leafNodeId
FROM (SELECT d1.id, d1.parent_id FROM department d1) t1,
(SELECT @pids := 5 ) t2
) t3
INNER JOIN department d2 ON d2.id = t3.id
WHERE t3.leafNodeId != 0

1、语句说明
(1)@pids := 5是父节点赋值,此处同样可以改成普通条件查询赋值

SELECT @pids := parent.id from department parent where parent.name = ‘后台组’

(2)IF(find_in_set(t1.parent_id, @pids) > 0, @pids := concat(@pids, ‘,’, t1.id), 0)
遍历表d1,判断parent_id是否在@pids中,如果在就把当前节点加入@pids中,不在就标识为0
(3)这里主要是利用了子节点的id肯定比父id大进行顺序遍历,如果发现查询结果不正确,可在d1中增加按id排序
(4)如果表较大,尽量增加一些条件过滤掉一些d1中的一些数据,比如d1.parent_id > 5等
————————————————
版权声明:本文为CSDN博主「Thomson Zhu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/thomson2021/article/details/115107761

mysql根据父节点查询所有的子节点以及根据子节点往上查询所有父节点相关推荐

  1. 学生成绩查询2021高考,2021高考结束后多久出成绩 成绩查询时间和方式是什么

    同学们在高考之后都会比较着急什么时候才能出成绩,以及高考成绩的查询方式都有哪些呢?小编整理了相关内容,一起来看一下吧! 高考结束后多久才能查自己的成绩? 1.高考成绩公布的时间为6月24-25日左右. ...

  2. mysql多表连接 索引_MySQL多表查询之外键、表连接、子查询、索引

    一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, ...

  3. mysql打平子表_对于oracle进行简单树查询(递归查询)

    DEPTID PAREDEPTID NAME NUMBER NUMBER CHAR (40 Byte) 部门id 父部门id(所属部门id) 部门名称 通过子节点向根节点追朔. Sql代码 selec ...

  4. mysql 子查询添加索引_mysql – 你能索引子查询吗?

    我有一个表和一个如下所示的查询.有关工作示例,请参阅此 SQL Fiddle. SELECT o.property_B, SUM(o.score1), w.score FROM o INNER JOI ...

  5. (19)一篇掌握MySQL数据库基础下 基本操作(外键约束、建表原则、多表查询、子查询)

    MySQL数据库基础下 一.修改表--添加外键约束 二.多表之间的建表原则 1.建数据库原则:通常情况下,一个项目/应用建一个数据库 2.多表之间的表原则: (1)一对多:分类和商品 (一个分类对应多 ...

  6. mysql子查询总分最高的学生_SQL使用子查询,查找班级成绩最高分

    -- 根据要求,获取班级成绩的最高分的学生 -- 第一个子查询,先去各个科目的最高,再横向比较各个科目的最高,再取最高分的那个科目 -- 第二个子查询,查询每个同学的最高分 -- 最后,通过第一个子查 ...

  7. js父元素获取子元素img_JS获取子节点、父节点和兄弟节点的方法实例总结

    本文实例讲述了JS获取子节点.父节点和兄弟节点的方法.分享给大家供大家参考,具体如下: 一.js获取子节点的方式 1. 通过获取dom方式直接获取子节点 其中test的父标签id的值,div为标签的名 ...

  8. mysql对结果再查询_mysql 再查询结果的基础上查询(子查询)

    SELECT A.wx_name, A.wx_litpic, B . * FROM ( SELECT uid, COUNT( * ) AS daticishu FROM statements WHER ...

  9. MySQL使用IN、EXISTS、ANY、ALL关键字的子查询

    子查询是SELECT查询的另一个查询的附属,MySQL 4.1可以嵌套多个查询,在外面一层的查询中使用里面一层查询产生的结果集.这样就不是执行两个(或者多个)独立的查询,而是执行包含一个(或者多个)子 ...

最新文章

  1. 阿里云双12服务器和阿里云双12数据库活动又开始了
  2. HttpRequest接口测试
  3. R语言sys方法:sys.chmod函数改变指定文件的权限、Sys.Date函数返回系统的当前日期、Sys.time函数返回系统的当前时间
  4. 2013:奇虎360最好的时光
  5. 阿里面试题Linux curl命令详解
  6. 怎么确定迭代器后面还有至少两个值_为什么range不是迭代器?range到底是什么类型?
  7. User status for Service Order
  8. 异步加载js文件并执行js方法:实现异步处理网页的复杂效果
  9. 2014东师计算机应用基础离线作业,2014秋东师《计算机应用基础》离线作业及答案...
  10. 阿里云自定义日记文件无法通过ftp下载
  11. html2canvas提升像素,jspdf + html2canvas 实现html转pdf (提高分辨率版本)
  12. Python多进程之Pool
  13. 电磁兼容(EMC)标准结构的划分与分类
  14. office2010 打开报错 无法访问您试图使用的功能所在的网络位置
  15. 海马玩模拟器 修改host(让hosts生效)
  16. AES算法在Wi-Fi加密中的应用
  17. .[转] 家里有娃娃的请注意,终于把儿歌凑齐了!! 儿歌大全
  18. java多线程之Callable接口
  19. 搭建speedtest server
  20. 计算机教室网络连接简图,多媒体教室连接示意图.ppt

热门文章

  1. 如何将海康大华宇视硬件NVR的通道都注册接入到GB/T28181国标视频直播流媒体平台
  2. 多帧审核 | 让3D点云追踪标注效率提升72%的“秘密武器”
  3. mount -t ntfs 读写_享受更快的读写体验!技嘉黑雕AORUS Gen4 SSD 1TB评测
  4. jar文件无法启动,闪退。虚拟机环境DirBuster解压安装后点击DirBuster.jar无法启动界面
  5. fm2018 ajax,FM2018妖人推荐攻略_足球经理2018最有潜力妖人名单
  6. Prepar3D飞行模拟器中的飞机是怎么制作的?
  7. DataScience:KNIME工具的简介、安装、使用方法之详细攻略
  8. 2018年6月14日笔记
  9. 某项目标书写作经历之一
  10. 南京林业大学转计算机专业好转吗,南京林业大学转本学长谈江苏专转本高分经验...