mysql 8.0前递归查询
2021/7/27 2:05:55
本文主要是介绍mysql 8.0前递归查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
建表
CREATE TABLE `department` ( `dep_id` int unsigned NOT NULL AUTO_INCREMENT comment '公司框架表', `dep_name` varchar(32) DEFAULT NULL COMMENT '部门名称', `parent_id` int unsigned DEFAULT NULL comment '上级id', `dep_path` varchar(255) DEFAULT NULL comment '路径名称', `del_flag` tinyint DEFAULT '0' comment '是否删除表', `parent_flag` tinyint DEFAULT '0' comment '是否是父级别', `enabled` tinyint(1) DEFAULT '1' comment '是否启用', PRIMARY KEY (`dep_id`), key `dep_parent_id`(`parent_id`), CONSTRAINT `dep_parent_id` FOREIGN KEY(`parent_id`) REFERENCES `department`(`dep_id`) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE=InnoDB default charset=utf8 comment '公司架构表';
插入数据
INSERT INTO department (dep_id, dep_name, parent_id, dep_path, del_flag, parent_flag, enabled) VALUES (1, 'a0', null, '1', 0, 1, 1), (2, 'b0', 1, '1,2', 0, 1, 1), (3, 'b1', 1, '1,3', 0, 1, 1), (4, 'b2', 1, '1,4', 0, 1, 1), (5, 'c0', 2, '1,2,5', 0, 1, 1), (6, 'c1', 2, '1,2,6', 0, 1, 1), (7, 'c2', 2, '1,2,7', 0, 1, 1), (8, 'c3', 2, '1,2,8', 0, 0, 1), (9, 'c4', 2, '1,2,9', 0, 1, 1), (10, 'c5', 3, '1,3,10', 0, 1, 1), (11, 'c6', 3, '1,3,11', 0, 0, 1), (12, 'c7', 3, '1,3,12', 0, 0, 1), (13, 'c8', 4, '1,4,13', 0, 0, 1), (14, 'd0', 5, '1,2,5,14', 0, 0, 1), (15, 'd1', 5, '1,2,5,15', 0, 0, 1), (16, 'd2', 5, '1,2,5,16', 0, 0, 1), (17, 'd3', 5, '1,2,5,17', 0, 0, 1), (18, 'd4', 12, '1,3,12,18', 0, 0, 1), (19, 'd5', 12, '1,3,12,19', 0, 0, 1), (20, 'd6', 12, '1,3,12,20', 0, 0, 1), (21, 'd7', 5, '1,2,5,21', 0, 0, 1), (22, 'd8', 13, '1,4,13,22', 0, 0, 1), (23, 'd9', 9, '1,2,9,23', 0, 0, 1), (24, 'd10', 9, '1,2,9,24', 0, 0, 1), (25, 'd11', 7, '1,2,7,25', 0, 0, 1), (26, 'd12', 10, '1,3,10,26', 0, 0, 1);
查询
SELECT B.dep_id, B.dep_name, B.dep_path, A.LEVEL FROM (SELECT @ids AS _ids, ( SELECT @ids := GROUP_CONCAT(dep_id) FROM department WHERE FIND_IN_SET(parent_id, @ids)) AS cids, @l := @l + 1 AS LEVEL FROM department, (SELECT @ids := 5, @l := 0) C WHERE @ids IS NOT NULL ) A, department B WHERE FIND_IN_SET(B.dep_id, A._ids);
这篇关于mysql 8.0前递归查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-25MySQL报错Duplicate entry '0' for key 'PRIMARY'
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享