返回顶部
首页 > 资讯 > 数据库 >以mysql为例,通过sql查找所有父节点和所有子节点
  • 682
分享到

以mysql为例,通过sql查找所有父节点和所有子节点

mysqlsql父节点子节点 2023-08-16 16:08:39 682人浏览 独家记忆
摘要

以图中的dept表为例: id:主键 parent_id:父id name:名称 1. 获取所有子节点sql: select id from dept where id = 2 union selec

以图中的dept表为例:
在这里插入图片描述
id:主键
parent_id:父id
name:名称

1. 获取所有子节点sql

 select id from dept where id = 2    union select t.id        from (select * from dept where parent_id is not null) t,             (select @pid := 2) pd        where FIND_IN_SET(parent_id,@pid) > 0                  and @pid := CONCAT(@pid,',',id)

此sql查询id=2的所有子节点id,并包括当前id=2的节点,如果不想包括当前节点,去掉

select id from dept where id = 2uNIOn

即可

查询结果:
在这里插入图片描述
2. 获取所有父节点sql:

SELECT t2.idFROM ( SELECT @r AS _id, (SELECT @r := parent_id FROM dept WHERE id = _id) AS parent_id, @l := @l + 1 AS lvl FROM (SELECT @r := 3, @l := 0) vars, dept WHERE @r != 0) t1 JOIN dept t2 ON t1._id = t2.id ORDER BY t1.lvl DESC

此sql查询id=3的所有父节点sql,
查询结果:
在这里插入图片描述

来源地址:https://blog.csdn.net/scorpio_meng/article/details/131209973

您可能感兴趣的文档:

--结束END--

本文标题: 以mysql为例,通过sql查找所有父节点和所有子节点

本文链接: https://lsjlt.com/news/371586.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作