mysql实现向下递归与向上递归方式

 更新时间:2026年04月17日 10:04:47   作者:搬砖的梦先生  
本文介绍了FIND_IN_SET函数的使用,可以替代SQL的IN查询多个节点数据,也可通过=关联查询单个节点,此外,还提到了向下和向上递归查询的方法

1、表描述

FIND_IN_SET:类似sql的in查询查询多个节点的数据,这个函数可以换成=号进行关联,=关联时只能查询一个节点的数据,

表名称: T_table

名称描述
code数据标识
pCode数据父标识

2、向下递归查询

SELECT T3.*
-- 层级需要
-- ,T2.level_
FROM( 
	SELECT @code as _code, 
        (SELECT @code := GROUP_CONCAT(code) 
            FROM T_table 
            WHERE FIND_IN_SET(pCode, @code) 
        ) as T1 
        -- 层级需要
        -- ,@level := @level+1 as level_
    FROM T_table, 
		(SELECT @code := 'code1,code2,...'
				-- 层级需要
				-- ,@level := -1
		) T4
		WHERE @code IS NOT NULL 
) T2, T_table T3 
WHERE FIND_IN_SET(T3.code, T2._code) 
-- 不包含自身
-- AND !FIND_IN_SET(T3.code,'code1,code2,...')

3、向上递归查询

SELECT T3.* 
-- 层级需要
-- ,T2.level_
FROM( 
	SELECT @code as _code, 
		(SELECT @code := GROUP_CONCAT(pCode) 
			FROM T_table 
			WHERE FIND_IN_SET(code,@code)
		) as T1
		-- 层级需要
        -- ,@level := @level+1 as level_
	FROM T_table, 
		(SELECT @code := 'code1,code2,...'
				-- 层级需要
				-- ,@level := -1
		) T4 
		WHERE @code IS NOT NULL 
	) T2, T_table T3
WHERE FIND_IN_SET(T3.code, T2._code) 
-- 不包含自身
-- AND !FIND_IN_SET(T3.code,'code1,code2,...')

4、总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一文了解Mysql分区的使用

    一文了解Mysql分区的使用

    分区允许根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分,本文主要介绍了Mysql分区的使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • 详解SparkSql输出数据的方式

    详解SparkSql输出数据的方式

    在处理数据时,SparkSql提供了多种数据输出方式,包括普通文件输出、保存到数据库和保存到Hive,普通文件输出支持追加模式、覆写模式、报错模式和忽略模式,本文介绍SparkSql输出数据的方式,感兴趣的朋友一起看看吧
    2024-11-11
  • mysql 正则表达式查询含有非数字和字符的记录

    mysql 正则表达式查询含有非数字和字符的记录

    这篇文章主要介绍了mysql 正则表达式查询含有非数字和字符的记录的相关资料,需要的朋友可以参考下
    2016-12-12
  • MySQL实现查询处理JSON数据的示例详解

    MySQL实现查询处理JSON数据的示例详解

    这篇文章主要为大家详细介绍了MySQL如何实现查询处理JSON数据,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解一下
    2023-06-06
  • MySQL从5.7升级到8.0的完整操作流程(小白也能看懂)

    MySQL从5.7升级到8.0的完整操作流程(小白也能看懂)

    MySQL 8.0 相比 5.7 引入了很多新特性和改进,但直接升级存在一定风险,所以本篇博客详细介绍如何安全地升级数据库,让你在宝塔环境下顺利完成操作,需要的朋友可以参考下
    2025-10-10
  • 在MySQL中解析JSON或将表中字段值合并为JSON问题

    在MySQL中解析JSON或将表中字段值合并为JSON问题

    这篇文章主要介绍了在MySQL中解析JSON或将表中字段值合并为JSON问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • MySQL字符集中文乱码解析

    MySQL字符集中文乱码解析

    这篇文章主要给大家解析了MySQL字符集中文乱码的问题,文章通过代码示例讲解的非常详细,对我们的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-09-09
  • MYSQL索引建立需要注意以下几点细节

    MYSQL索引建立需要注意以下几点细节

    建立MYSQL索引时需要注意以下几点:建立索引的时机/对于like/对于有多个条件的/开启索引缓存/建立索引是有代价的等等,感兴趣的你可以参考下本文,或许可以帮助到你
    2013-03-03
  • mysql installer community 5.7.16安装详细教程

    mysql installer community 5.7.16安装详细教程

    这篇文章主要为大家介绍了mysql installer community 5.7.16安装详细教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • MySql查询某个时间段内的数据实例(前一周、前三个月、前一年等)

    MySql查询某个时间段内的数据实例(前一周、前三个月、前一年等)

    在实际工作中需要整理一份时间在规定时间前后的统计表,下面这篇文章主要给大家介绍了关于MySql查询某个时间段内的数据的相关资料,包括前一周、前三个月、前一年等,需要的朋友可以参考下
    2022-10-10

最新评论