大家好,又见面了,我是你们的朋友全栈君。
1、创建表:
DROP TABLE IF EXISTS `t_areainfo`;
CREATE TABLE `t_areainfo` (
`id` int(11) NOT ” AUTO_INCREMENT,
`level` int(11) DEFAULT ”,
`name` varchar(255) DEFAULT ”,
`parentId` int(11) DEFAULT ”,
`status` int(11) DEFAULT ”,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8;
2、初始数据:
INSERT INTO `t_areainfo` VALUES (”, ”, ‘中国’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘华北区’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘华南区’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘海淀区’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘丰台区’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘朝阳区’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区1’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区2’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区3’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区4’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区5’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区6’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区7’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区8’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区9’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区10’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区11’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区12’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区13’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区14’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区15’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区16’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区17’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区18’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区19’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区1’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区2’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区3’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区4’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区5’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区6’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区7’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区8’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区9’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区10’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区11’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区12’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区13’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区14’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区15’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区16’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区17’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区18’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘北京XX区19’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省1’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省2’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省3’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省4’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省5’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省6’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省7’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省8’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省9’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省10’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省11’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省12’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省13’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省14’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省15’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省16’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省17’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省18’, ”, ”);
INSERT INTO `t_areainfo` VALUES (”, ”, ‘xx省19’, ”, ”);
3、向下递归:
利用find_in_set()函数和group_concat()函数实现递归查询:
DROP FUNCTION IF EXISTS queryChildrenAreaInfo;
CREATE FUNCTION queryChildrenAreaInfo(areaId INT)
RETURNS VARCHAR(4000)
BEGIN
DECLARE sTemp VARCHAR(4000);
DECLARE sTempChd VARCHAR(4000);
SET sTemp=’$’;
SET sTempChd = CAST(areaId AS CHAR);
WHILE sTempChd IS NOT NULL DO
SET sTemp= CONCAT(sTemp,’,’,sTempChd);
SELECT GROUP_CONCAT(id) INTO sTempChd FROM t_areainfo WHERE FIND_IN_SET(parentId,sTempChd)>0;
END WHILE;
RETURN sTemp;
END;
4、调用方式:
SELECT queryChildrenAreaInfo(1);
查询id为”4″下面的所有节点
SELECT * FROM t_areainfo WHERE FIND_IN_SET(id,queryChildrenAreaInfo(4));
5、向上递归:
DROP FUNCTION IF EXISTS queryChildrenAreaInfo1;
CREATE FUNCTION queryChildrenAreaInfo1(areaId INT)
RETURNS VARCHAR(4000)
BEGIN
DECLARE sTemp VARCHAR(4000);
DECLARE sTempChd VARCHAR(4000);
SET sTemp=’$’;
SET sTempChd = CAST(areaId AS CHAR);
SET sTemp = CONCAT(sTemp,’,’,sTempChd);
SELECT parentId INTO sTempChd FROM t_areainfo WHERE id = sTempChd;
WHILE sTempChd <> 0 DO
SET sTemp = CONCAT(sTemp,’,’,sTempChd);
SELECT parentId INTO sTempChd FROM t_areainfo WHERE id = sTempChd;
END WHILE;
RETURN sTemp;
END;
6、调用方式:
查询id为”7″的节点的所有上级节点:
SELECT * from t_areainfo where FIND_IN_SET(id,queryChildrenAreaInfo1(7));
包含mysql 递归查询父节点 和子节点
包含mysql 递归查询父节点 和子节点 mysql递归查询,查父集合,查子集合 查子集合 –drop FUNCTION `getChildList` CREATE FUNCTION `getChi …
MySQL递归查询_函数语法检查_GROUP_CONCAT组合结果集的使用
1-前言: 在Mysql使用递归查询是很不方便的,不像Sqlserver可以直接使用声明变量,使用虚拟表等等.如:DECLARE,BEGIN … END ,WHILE ,IF 等等. 在My …
MySQL递归查询树状表的子节点、父节点具体实现
mysql版本(5.5.6等等)尚未支持循环递归查询,和sqlserver.oracle相比,mysql难于在树状表中层层遍历的子节点.本程序重点参考了下面的资料,写了两个sql存储过程,子节点查询算 …
递归的实际业务场景之MySQL 递归查询
喜欢就点个赞呗! 源码
MySQL递归查询
MySQL8.0已经支持CTE递归查询,举例说明 CREATE TABLE EMP (EMPNO integer NOT NULL, ENAME ), JOB ), MGR integer, HIRE …
MySQL递归查询所有子节点,树形结构查询
–表结构 CREATE TABLE `address` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code_value` varchar(32) DEFAUL …
MySQL递归查询树状表的子节点、父节点
表结构和表数据就不公示了,查询的表user_role,主键是id,每条记录有parentid字段; 如下mysql查询函数即可实现根据一个节点查询所有的子节点,根据一个子节点查询所有的父节点.对于数据 …
mysql 递归查询 主要是对于层级关系的查询
最近遇到了一个问题,在mysql中如何完成节点下的所有节点或节点上的所有父节点的查询?在Oracle中我们知道有一个Hierarchical Queries可以通过CONNECT BY来查询,但是,在 …
MySQL递归查询父子节点
1.表结构 CREATE TABLE folder( id BIGINT(20) NOT NULL, parent_id BIGINT(20) DEFAULT NULL, PRIMARY KEY id …
随机推荐
LR录制脚本IE不能打开解决方法
运行环境:win7 64位 解决方法:1.卸载IE11 2.计算机——属性——高级系统设置——性能里的设置——数据执行保护——选择“为除下列选定程序之外的所有程序和服务启用”——添加IE浏览器和VUG …
js设计模式
http://www.csdn.net/article/2011-09-02/303983 阐明JavaScript设计模式.CSDN研发频道对此文进行了整理选取部分内容,供开发者学习.参考. 内容如 …
CountDownLatch和CyclicBarrier的区别(转)
在网上看到很多人对于CountDownLatch和CyclicBarrier的区别简单理解为CountDownLatch是一次性的,而CyclicBarrier在调用reset之后还可以继续使用.那如 …
openssl使用+Demo
1. websiteSSL(secure Socket Layer)TLS(transport Layer Security) – SSL3.0基础之上提出的安全通信标准,目前版本是1.0openss …
A Bug&#39;s Life(种类并查集)(也是可以用dfs做)
http://acm.hdu.edu.cn/showproblem.php?pid=1829 A Bug’s Life Time Limit:5000MS Memory Limit:327 …
VSCode插件MSSQL教程(昨天提了一下)
推荐一个跨平台SQL IDE:https://docs.microsoft.com/zh-cn/sql/sql-operations-studio/download 什么数据库都木有(系统自带的不算) …
url全部信息打印
public String findAllContract(HttpServletRequest request,String a){ String string = new StringBuilde …
sublime安装说明
安装Install package https://www.cnblogs.com/lixuwu/p/5693624.html 常用配置 Perference → Settings – User,用下 …
split函数
b=”aa,:bb:c,c”a1,a2,a3=b.split(“:”) #以:为分隔符,分成3个字符串
kbmmw 中虚拟文件操作入门
kbmmw 中一直有一个功能,但是基本上都没有提过,但是在实际应用中,却非常有用,这个功能就是 虚拟文件包功能,他可以把一大堆文件保存到一个文件里面,方便后台管理. kbmmw 的虚拟文件在单元kbm …
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/147865.html原文链接:https://javaforall.cn