在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

实现mysql树查询的功能

130次阅读
没有评论

共计 2284 个字符,预计需要花费 6 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章给大家分享的是有关实现 mysql 树查询的功能的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考。一起跟随丸趣 TV 小编过来看看吧。

需求:查找当前 (任意) 级别下的所有子节点。

通过自定义 mysql 函数实现, 先贴代码,后面给出详细说明:

delimiter $$
CREATE FUNCTION `getChildList`(rootId INT)
RETURNS varchar(1024)
BEGIN
 DECLARE childListStr VARCHAR(1024);
 DECLARE tempChildStr VARCHAR(1024);
 DECLARE rootIdStr VARCHAR(64);
 SET childListStr=NULL;
 SET rootIdStr=cast(rootId as CHAR);
 myloop: WHILE TRUE
 SELECT GROUP_CONCAT(id) INTO tempChildStr FROM test where FIND_IN_SET(parrent_id,rootIdStr) 
 IF tempChildStr IS NOT NULL THEN
 SET rootIdStr=tempChildStr;
 IF childListStr IS NULL THEN
 SET childListStr=tempChildStr;
 ELSE
 SET childListStr=concat(childListStr, , ,tempChildStr);
 END IF;
 ELSE
 LEAVE myloop;
 END IF;
 END WHILE;
 RETURN childListStr;
END $$

建表 sql:

CREATE TABLE `test` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `parrent_id` int(11) DEFAULT 0 ,
 `name` varchar(32) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| parrent_id | int(11) | YES | | 0 | |
| name | varchar(32) | YES | | NULL | |
+------------+------------------+------+-----+---------+----------------+
+----+------------+------+
| id | parrent_id | name |
+----+------------+------+
| 1 | 0 | cg1 |
| 2 | 1 | cg2 |
| 3 | 2 | cg3 |
| 4 | 3 | cg4 |
| 5 | 4 | cg5 |
| 6 | 5 | cg6 |
| 7 | 6 | cg7 |
| 8 | 7 | cg8 |
| 9 | 8 | cg9 |
| 10 | 1 | cg10 |
| 11 | 2 | cg11 |
+----+------------+------+

第 1 行:
delimiter 编写函数体内容的时候,需要使用 DELIMITER 关键字将分隔符先修改为别的,否则编写语句的时候写到 的时候会直接执行,导致函数编写失败

2- 4 行:mysql 函数语法规范,不多解释

5- 9 行:定义逻辑所需变量。

childListStr:最终返回的子节点 ids_str(例如: 1,2,3,4,5)。
tempChildStr: 临时子节点 ids_str(例如: 1)。
rootIdStr: 输入根节点转换为 char 类型。

10-23 行:整个函数最关键的地方在 while 里面对 tempChildStr 的处理,以及对 内置函数 GROUP_CONCAT 和 FIND_IN_SET 的理解

每一次循环, 通过 GROUP_CONCAT 函数找出输入的根节点的直接下级节点,通过 GROUP_CONCAT 函数得到这些子节点的 id 组成的字符串。并将这次得到的子字符串作为根节点,去寻找下一级的所有的子节点。最后找到最后子节点没有下级时候,tempChildStr IS NOT NULL。退出循环,返回结果。

运行结果:

mysql select getChildList(1);
+-----------------------+
| getChildList(1) |
+-----------------------+
| 2,10,3,11,4,5,6,7,8,9 |
+-----------------------+
1 row in set (0.00 sec)
mysql select getChildList(2);
+------------------+
| getChildList(2) |
+------------------+
| 3,11,4,5,6,7,8,9 |
+------------------+
1 row in set (0.00 sec)

感谢各位的阅读!关于实现 mysql 树查询的功能就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向 AI 问一下细节

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-18发表,共计2284字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 亚洲成av人片不卡无码 | 美女无遮挡免费视频网站 | 国产精品久免费的黄网站 | 久久亚洲国产中v天仙www | 亚洲综合一区无码精品 | 欧美日韩亚洲区久久综合 | 免费人成视频在线观看视频 | 91色综合| 九九九国产视频 | 特级精品毛片免费观看 | 少妇高潮太爽了在线视频 | 国产精品极品美女自在线观看免费 | 亚洲欧美网址 | 在线观看亚洲成人 | 国产成人精品日本亚洲专 | 久久综合久久综合久久 | 亚洲精品456在线播放 | 国产日产欧产美 | 精品国产综合区久久久久久 | 波多野结衣办公室双飞 | 成人片黄网站a毛片免费 | 爱操视频在线观看 | 国产亚洲精品美女久久久久 | 99噜噜噜在线播放 | 狠狠色狠狠色88综合日日91 | 野花社区www高清视频 | 少妇熟女天堂网av | 中文字幕久久精品无码 | 欧美成人特黄级毛片 | 玩弄中年熟妇正在播放 | 国产网站在线播放 | 欧美午夜电影在线观看 | 精品亚洲成a人在线观看 | 亚洲电影在线观看 | 久久国产欧美另类久久久 | a毛片免费全部播放毛 | 国产欧美日韩精品a在线看 国产欧美日韩精品第三区 国产欧美日韩精品第一区 国产欧美日韩精品高清二区综合区 | 最新精品国偷自产在线美女足 | 99久久久无码国产精品性 | 亚洲国产成人久久笫一页 | 一级看片 |