mysql省市区递归查询_mysql 递归查询

mysql省市区递归查询_mysql 递归查询1、创建表:DROPTABLEIFEXISTS`t_areainfo`;CREATETABLE`t_areainfo`(`id`int(11)NOT”AUTO_INCREMENT,`level`int(11)DEFAULT”,`name`varchar(255)DEFAULT”,`parentId`int(11)DEFAULT”,`status`i…

大家好,又见面了,我是你们的朋友全栈君。

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);

d4a3f8a29c0c3a9a4aa41899f85a8c2f.png

查询id为”4″下面的所有节点

SELECT * FROM t_areainfo WHERE FIND_IN_SET(id,queryChildrenAreaInfo(4));

e199cffa5acb15e37b778aad23c62f7b.png

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));

ba13d71ec953ceecb41d9a407fe1d9f0.png

包含mysql 递归查询父节点 和子节点

包含mysql 递归查询父节点 和子节点 mysql递归查询,查父集合,查子集合 查子集合 –drop FUNCTION `getChildList` CREATE FUNCTION `getChi …

MySQL递归查询&lowbar;函数语法检查&lowbar;GROUP&lowbar;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使用&plus;Demo

1. websiteSSL(secure Socket Layer)TLS(transport Layer Security) – SSL3.0基础之上提出的安全通信标准,目前版本是1.0openss …

A Bug&&num;39&semi;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 …

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/147865.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 微信小程序个人服务器搭建[通俗易懂]

    微信小程序个人服务器搭建[通俗易懂]个人做微信小程序必须考虑到工作量和资金的问题,这篇文章总结出一套针对个人切实可行的方案。本文章重点在抛砖引玉,而不是对各种细节的详细描述。读者可以根据文中提到的各种关键词,查阅相关资料方案包括在Ubuntu上面使用flask建立web服务器 使用花生壳内网穿透 使用花生壳提供的带备案信息的域名 使用腾讯云提供的免费https证书 微信小程序网络连接的注意事项在Ubuntu上面使用…

  • 一气之下,我一行代码搞定了约瑟夫环问题,面试官懵了[通俗易懂]

    一气之下,我一行代码搞定了约瑟夫环问题,面试官懵了[通俗易懂]大家好,我是帅地。对于约瑟夫环问题估计大家都听说过,除非你刚刚读大一,因为在大一大部分学校的课本都会降到这个算法题。为了以防万一你没听过,我还是给下问题的描述问题描述:编号为1-N的N个士兵围坐在一起形成一个圆圈,从编号为1的士兵开始依次报数(1,2,3…这样依次报),数到m的士兵会被杀死出列,之后的士兵再从1开始报数。直到最后剩下一士兵,求这个士兵的编号。记得有一次,貌似是阿里的面试,面试官给了我一到原汁原味的约瑟夫好,好家伙,看我不把你秀一把。不过,作为一个有着几十场面

  • 进销存php带bom,进销存erp软件的绝对核心是BOM

    进销存php带bom,进销存erp软件的绝对核心是BOM进销存erp软件是一款基于SAAS架构的进销存管理软件,它适用于实体商超、批发零售、中小企业等库存管理场景。帮助经营者对购货、销货、零售、收付款等环节进行全程跟踪管理,可以让经营者及时了解各业务流程细节。图片来源于网络对中小企业,特别是制造业而言,库存管理的地位是无可取代的,是企业发展中最基本最关键的一环,中小企业引入进销存erp软件,能够帮助企业对库存物品的出入库/转仓/调整/盘点/借寄库等日常…

  • servu搭建ftp服务器_简单ftp server怎么用

    servu搭建ftp服务器_简单ftp server怎么用使用Serv-U搭建FTP服务器  操作一:Serv-U的安装1、双击安装包,点击“下一步” 2、选择安装位置,点击“下一步” 3、进入安装过程,如下图 4、安装完成 操作二  Serv-U的配置每个Serv-U引擎都能用来运行多个虚拟的FTP服务器,而虚拟的FTP服务器就称之为“域”。对于每个Serv-U  FTP服务器来讲,应该至少创建一个域和一个用

  • 磁盘阵列恢复方法以及注意事项

    磁盘阵列恢复方法以及注意事项想要弄清楚磁盘阵列恢复,首先就得知道什么是磁盘阵列,磁盘阵列多用于存储服务器,数据服务器等企业级大数据存储领域,磁盘阵列是把多块独立的物理硬盘按不同方式组合起来形成一个逻辑硬盘,当磁盘瘫痪或硬件损坏后,为了恢复存储在阵列平台的数据被称之为磁盘阵列数据恢复,而磁盘阵列能够提供比单个硬盘有着更高的性能和提供数据冗余的技术。  对于做数据恢复人员来讲,最怕的是什么,那就是在客户发现数据丢失后,没有停

  • 什么是UE4_unity3d和ue4区别

    什么是UE4_unity3d和ue4区别对于游戏的来说,最能够影响它的性能的,便是游戏程序的开发、维护工作了。游戏开发、维护工作都是通过游戏开发引擎来完成的,而U3D和UE4正是如今行业主流的两款游戏开发引擎。不同的游戏开发引擎在不同的游戏中使用,那么具体的u3d和ue4的区别是什么?小编常被想要进入游戏行业的同学问到,学U3D和UE4哪个更好?其实这主要是看你自己的就业倾向。下面小编就从两款游戏开发引擎的具体区别来讲讲我们该如何选择。…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号