mysql递归查询 缓存_MySQL-递归查询方法解析
MySQL-遞歸查詢方法解析,兄弟連教育(www.lampbrother.net)幫大家做了個簡單的整理:有需要的朋友可以參考下哈。
首先
表結構和數(shù)據(jù)
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
一級寫一個查詢結果聯(lián)合起來
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
使用函數(shù)方法
創(chuàng)建函數(shù)來獲取個節(jié)點的值
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;
調(diào)用函數(shù)查出結果
SELECT * from ?class where classid in (SELECT a.ban FROM class a,class b where a.banji=b.classid) ?and banji=0
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的mysql递归查询 缓存_MySQL-递归查询方法解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 中如何删除重复的数据_mys
- 下一篇: mysql 磁盘i o 优化_经典案例: