MySQL-递归查询方法解析,兄弟连教育(www.lampbrother.net)帮大家做了个简单的整理:有需要的朋友可以参考下哈。

首先

表结构和数据

CREATE TABLE `class` (  `classid` int(11) NOT NULL AUTO_INCREMENT,  `banji` int(11) DEFAULT NULL COMMENT '0',  `nianji` varchar(255) DEFAULT NULL,  PRIMARY KEY (`classid`)) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;-- ------------------------------ Records of class-- ----------------------------INSERT INTO `class` VALUES ('1', '0', '1');INSERT INTO `class` VALUES ('2', '1', '2');INSERT INTO `class` VALUES ('3', '1', 'f');INSERT INTO `class` VALUES ('4', '2', 'd');INSERT INTO `class` VALUES ('5', '3', 's');INSERT INTO `class` VALUES ('6', '0', 'a');INSERT INTO `class` VALUES ('7', '6', 'q');INSERT INTO `class` VALUES ('8', '7', 'h');INSERT INTO `class` VALUES ('9', '5', '额');INSERT INTO `class` VALUES ('10', '4', '121');

方法解析1

一级写一个查询结果联合起来

SELECT * from class WHERE classid =1UNIONSELECT * FROM class where banji in(SELECT classid from class  WHERE classid =1 )UNION SELECT * FROM class where banji in (SELECT classid FROM class where banji in(SELECT classid from class  WHERE classid =1))

方法解析2

使用函数方法

创建函数来获取个节点的值

CREATE FUNCTION `selectTree`(`id` int) RETURNS varchar(2000)BEGIN #Routine body goes here... DECLARE st VARCHAR(4000); DECLARE stcc VARCHAR(2000);#给st赋初值不能null,null会没有返回值 set st=''; set stcc=id;#判断stcc的是否为null WHILE stcc is not NULL DO#拼接字符串赋值给st SET st=CONCAT(st,',',stcc); SELECT GROUP_CONCAT(classid) INTO stcc FROM class where FIND_IN_SET(banji,stcc)>0;END WHILE; RETURN st;END;

调用函数查出结果

SELECT * from  class where classid in (SELECT a.ban FROM class a,class b where a.banji=b.classid)  and banji=0

mysql递归查询 缓存_MySQL-递归查询方法解析相关推荐

  1. mysql select 缓存_mysql select缓存机制使用详解

    mysql Query Cache 默认为打开.从某种程度可以提高查询的效果,但是未必是最优的解决方案,如果有的大量的修改和查询时,由于修改造成的cache失效,会给服务器造成很大的开销,可以通过qu ...

  2. mysql 递归查询效率_mysql 递归查询

    SET sTemp='$'; SET sTempChd = CAST(Id AS CHAR); -- 转化数据格式 WHILE sTempChd IS NOT NULL DO  -- 开始循环 SET ...

  3. mysql par文件_mysql .par文件格式解析

    mysql 5.6版本分区表有一个文件:表名.par, 该文件在5.7.6版本后被移除. 在一个现场环境中,客户端执行check table后报错如下,源码跟踪下来之后是缺失par文件. mysql解 ...

  4. mysql分区表 缓存_Mysql 分区表-分区操作

    一.查看MySQL是否支持分区 1.MySQL5.6以及之前版本 show variables like '%partition%'; 2.MySQL5.7 show plugins; 二.分区表的分 ...

  5. mysql多级分片_MySQL分片方法?

    分割MySQL表的最佳方法是不要这样做,除非完全不可避免地这样做. 在编写应用程序时,通常希望以最大化速度和开发人员速度的方式执行此操作. 您只在必要时优化延迟(答案准备就绪的时间)或吞吐量(每个时间 ...

  6. mysql redis缓存_mysql缓存 (redis)

    Mysq需要注意的地方: mysql主从复制 延迟来自于 sql线程(解决:myslq5.7 可设置成多线程并行) 数据库监控:lepus 大型数据库的删除(安全快速的方法 一部分一部分删除)(不推荐 ...

  7. mysql myisam 缓存_MySQL - 储存引擎myisam相关参数

    1.表变化修复排序缓冲区 myisam_sort_buffer_size = 64M MyISAM设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE或用CREATE INDEX创建索引或A ...

  8. mysql offset函数_mysql查询语句解析

    原标题:mysql查询语句解析 一.查询基本知识 select 列1,列2,...,列n from 表名 1.条件查询:where ①比较运算符:=.!=.< >.<= .>= ...

  9. php mysql 查询缓存_mysql 查询缓存使用详解

    MySQL server 有一个重要的特征:查询缓存(Query Cache). 当在使用中,查询缓存会存储一个 SELECT 查询的文本与被传送到客 户端的相应结果.如果之后接收到一个同样的查询,服 ...

  10. mysql 不用缓存_mysql有自己的缓存机制,为什么还要用redis和memcac? 爱问知识人

    有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具.前者使用起 ...

最新文章

  1. 为什么小批量会可以使模型获得更大的泛化
  2. 【转载】设置Windows中gvim的默认配色方案和字体
  3. 程序员辞职卖卷饼:4天挣1个月工资!摆摊真那么赚钱?
  4. python list(str(x:str)) -> List
  5. php性能需求,PHP语言性能考察
  6. 13个VSCode使用技巧,开启高效的开发模式
  7. 2018 5大技术趋势
  8. 新松机器人产业小镇_机器人行业迎来拐点,新松机器人如何“过冬”?丨亿欧读财报...
  9. 真正能成大事的人,往往有一个“共同特征”
  10. linux删除多余日志,linux 删除日志
  11. matlab在遥感数字图像处理方面的应用
  12. 系统集成项目管理工程师
  13. 音频信号转为开关控制信号_基于CPCI总线控制卡的信号完整性设计
  14. 2021秋招总结(器件方向转行数字IC设计)
  15. 三个非负整数 马蹄集
  16. chrome浏览器如何设置黑色背景
  17. ps – report process status
  18. 【集合】源码级深入理解LinkedList,点开即食
  19. 吴恩达Coursera深度学习课程 DeepLearning.ai 编程作业——Tensorflow+tutorial(2-3)
  20. java中servlet没反应_在Java Servlet中提交响应后无法转发

热门文章

  1. C++之map插入数据相同的key不能覆盖value解决办法
  2. 浅谈C++类(5)--友元
  3. 《看聊天记录都学不会C语言?太菜了吧》(11)2分钟领悟数组
  4. 公司c语言面试题目,c语言面试最必考的十道试题,求职必看!!!
  5. mysql signed 长度_浅谈mysql字段长度设置
  6. python中多维数组_python学习笔记-多维数组
  7. 惊了!日本街头出现透明公厕,竟有人排队抢着上!
  8. 你见过扇贝游泳吗? | 今日趣图
  9. 双十一,单身狗除了买买买,还能做什么?
  10. 人为什么会出轨?麻省理工学院告诉你:男女配对的真相