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 innodb的重要组件汇总

    mysql innodb的重要组件汇总

    这篇文章主要介绍了mysql innodb的重要组件的相关资料,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-12-12
  • 一篇文章搞懂MySQL加锁机制

    一篇文章搞懂MySQL加锁机制

    线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时进行保护,下面这篇文章主要给大家介绍了关于MySQL加锁机制的相关资料,需要的朋友可以参考下
    2022-01-01
  • MySQL对于各种锁的概念理解

    MySQL对于各种锁的概念理解

    今天小编就为大家分享一篇关于MySQL对于各种锁的概念理解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • MySQL的索引失效的原因实例及解决方案

    MySQL的索引失效的原因实例及解决方案

    这篇文章主要讨论了MySQL索引失效的常见原因及其解决方案,它涵盖了数据类型不匹配、隐式转换、函数或表达式、范围查询、LIKE查询、OR条件、全表扫描、索引选择性低、覆盖索引不足和统计信息不准确等问题,感兴趣的朋友一起看看吧
    2024-12-12
  • Mysql数据库幻读问题举例详解

    Mysql数据库幻读问题举例详解

    数据库幻读是数据库并发事务控制中可能发生的一种现象,它属于不可重复读的一个特例,但关注点不同,这篇文章主要介绍了Mysql数据库幻读问题的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-10-10
  • Mysqlslap MySQL压力测试工具 简单教程

    Mysqlslap MySQL压力测试工具 简单教程

    Mysqlslap是从5.1.4版开始的一个MySQL官方提供的压力测试工具。通过模拟多个并发客户端访问MySQL来执行压力测试,同时详细的提供了“高负荷攻击MySQL”的数据性能报告。并且能很好的对比多个存储引擎在相同环境下的并发压力性能差别
    2011-10-10
  • 52条SQL语句教你性能优化

    52条SQL语句教你性能优化

    性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化,本文就介绍了52条优化方法,感兴趣的可以了解一下
    2021-05-05
  • SQL左连接和右连接原理及实例解析

    SQL左连接和右连接原理及实例解析

    这篇文章主要介绍了SQL左连接和右连接原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • MySQL中NULL对索引的影响深入讲解

    MySQL中NULL对索引的影响深入讲解

    这篇文章主要给大家介绍了关于MySQL中NULL对索引的影响的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • Mysql 数据库结构及索引类型

    Mysql 数据库结构及索引类型

    这篇文章主要介绍了Mysql 数据库结构及索引类型,数据库索引是 mysql 数据库中重要的组成部分,是数据库查询数据速度提升的关键,本文将介绍数据库索引的一些内容,下文更多相关内容,需要的小伙伴可以参考一下
    2022-05-05

最新评论