首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >mysql的递归查询

mysql的递归查询

作者头像
在水一方
发布2022-06-14 16:22:57
发布2022-06-14 16:22:57
3.2K0
举报
文章被收录于专栏:在水一方在水一方

对于树结构的查询,在oracle数据库中有现成的函数直接调用,但是在mysql中这部分没有现成的函数可以直接调用,对于树形结构的递归遍历在实际业务中也是非常常见的。本小节做一个记录

向下递归查询

代码语言:javascript
复制
SELECT
	ID.LEVEL,
	DATA.* 
FROM
	(
	SELECT
		@ids AS _ids,
		( SELECT @ids := GROUP_CONCAT( id ) FROM 表名 WHERE FIND_IN_SET( 父级 id字段, @ids ) ) AS cids,
		@l := @l + 1 AS LEVEL 
	FROM
		表名,
		( SELECT @ids := '条件id', @l := 0 ) b 
	WHERE
		@ids IS NOT NULL 
	) ID,
	表名 DATA 
WHERE
	FIND_IN_SET( DATA.id, ID._ids ) 
ORDER BY
	LEVEL,
	id

向上递归

代码语言:javascript
复制
SELECT
	GROUP_CONCAT( s.name SEPARATOR "," ) 
FROM
	(
	SELECT
		T2.id,
		T2.NAME 
	FROM
		(
		SELECT
			@r AS _id,
			( SELECT @r := PK_FATHERORG FROM sys_mdm_org WHERE PK_ORG = _id ) AS 2v2,
			@l := @l + 1 AS lvl 
		FROM
			( SELECT @r := '0001A41000000010JDYT' ) vars,
			sys_mdm_org h 
		WHERE
			@r <> 0 
		) T1
		JOIN sys_mdm_org T2 ON T1._id = T2.pk_org 

	) s 

@用来标识用户变量

https://blog.csdn.net/qq_37493556/article/details/108296542

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档