广告
返回顶部
首页 > 资讯 > 数据库 >MySql利用父id递归向下查询子节点的方法实例
  • 420
分享到

MySql利用父id递归向下查询子节点的方法实例

2024-04-02 19:04:59 420人浏览 安东尼
摘要

不用写存储过程,不用建数据库函数,一段sql就可以实现 不用写存储过程,不用建数据库函数,一段sql就可以实现 不用写存储过程,不用建数据库函数,一段sql就可以实现 SELEC&#

不用写存储过程,不用建数据库函数,一段sql就可以实现

不用写存储过程,不用建数据库函数,一段sql就可以实现

不用写存储过程,不用建数据库函数,一段sql就可以实现

SELECT
	ID.LEVEL,
	DATA.* 
FROM
	(
	SELECT
		@ids AS _ids,
		( SELECT @ids := GROUP_CONCAT( region_id ) FROM region WHERE FIND_IN_SET(parent_id, @ids ) ) AS cids,
		@l := @l + 1 AS LEVEL 
	FROM
		region,
		( SELECT @ids := 3, @l := 0 ) b 
	WHERE
		@ids IS NOT NULL 
	) ID,
	region DATA 
WHERE
	FIND_IN_SET( DATA.region_id, ID._ids ) 
ORDER BY
	LEVEL

测试

--创建测试环境
create table t_test(
	id int PRIMARY key,
	parent_id int,
	name varchar(200)
)

insert t_test VALUES(1,null,"中国");

insert t_test VALUES(2,1,"华北");

insert t_test VALUES(3,2,"山西省");
insert t_test VALUES(4,2,"北京");

insert t_test VALUES(5,3,"临汾市");
insert t_test VALUES(6,4,"北京市");


insert t_test VALUES(7,5,"尧都区");
insert t_test VALUES(8,6,"朝阳区");

insert t_test VALUES(9,7,"解放西路");
insert t_test VALUES(10,8,"朝阳北路");


SELECT * FROM t_test;

测试数据展示

查询 id=1,查询中国下边有哪些地方

SELECT
	ID.LEVEL,
	DATA.* 
FROM
	(
	SELECT
		@ids AS _ids,
		( SELECT @ids := GROUP_CONCAT( id ) FROM t_test WHERE FIND_IN_SET(parent_id, @ids ) ) AS cids,
		@l := @l + 1 AS LEVEL 
	FROM
		t_test,
		( SELECT @ids := 1, @l := 0 ) b 
	WHERE
		@ids IS NOT NULL 
	) ID,
	t_test DATA 
WHERE
	FIND_IN_SET( DATA.id, ID._ids ) 
ORDER BY
	LEVEL

id=3,查询山西下边有哪些地方

SELECT
	ID.LEVEL,
	DATA.* 
FROM
	(
	SELECT
		@ids AS _ids,
		( SELECT @ids := GROUP_CONCAT( id ) FROM t_test WHERE FIND_IN_SET(parent_id, @ids ) ) AS cids,
		@l := @l + 1 AS LEVEL 
	FROM
		t_test,
		( SELECT @ids := 3, @l := 0 ) b 
	WHERE
		@ids IS NOT NULL 
	) ID,
	t_test DATA 
WHERE
	FIND_IN_SET( DATA.id, ID._ids ) 
ORDER BY
	LEVEL

id=4,查询北京下边有哪些地方

最后再从 id=2 华北地区往下查询

总结 

到此这篇关于Mysql利用父id递归向下查询子节点的文章就介绍到这了,更多相关mysql递归查询子节点内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: MySql利用父id递归向下查询子节点的方法实例

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySql利用父id递归向下查询子节点的方法实例
    不用写存储过程,不用建数据库函数,一段sql就可以实现 不用写存储过程,不用建数据库函数,一段sql就可以实现 不用写存储过程,不用建数据库函数,一段sql就可以实现 SELEC&#...
    99+
    2022-11-13
  • MySql如何利用父id递归向下查询子节点
    这篇文章主要介绍了MySql如何利用父id递归向下查询子节点,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。不用写存储过程,不用建数据库函数,一段sql就可以实现SELEC&#...
    99+
    2023-06-29
  • Oracle通过递归查询父子兄弟节点方法示例
    前言 说到Oracle中的递归查询语法,我觉得有一些数据库基础的童鞋应该都知道,做项目的时候应该也会用到,下面本文就来介绍下关于Oracle通过递归查询父子兄弟节点的相关内容,分享出来供大家参考学习,下面话...
    99+
    2022-10-18
  • mysql递归子节点查询的方法是什么
    在MySQL中,递归子节点查询可以通过使用递归查询语句来实现。MySQL本身没有提供递归查询的功能,但可以通过使用存储过程或视图来模...
    99+
    2023-10-25
    mysql
  • Mysql 实现向上递归查找父节点并返回树结构的示例代码
    通过mysql 8.0以下版本实现,一个人多角色id,一个角色对应某个节点menu_id,根节点的父节点存储为NULL, 向上递归查找父节点并返回树结构。如果只有叶子,剔除掉; 如果只有根,只显示一个秃顶的根 ;如果既有...
    99+
    2022-09-12
  • Mysql实现向上递归查找父节点并返回树结构的示例代码
    通过mysql 8.0以下版本实现,一个人多角色id,一个角色对应某个节点menu_id,根节点的父节点存储为NULL, 向上递归查找父节点并返回树结构。如果只有叶子,剔除掉; 如果...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作