mysql如何递归查询所有数据

mysql递归查询所有数据的方法:首先创建表,并初始数据;然后利用【find_in_set()】函数和【group_concat()】函数实现递归查询,代码为【SELECT queryChildrenAreaInfo(1);】。

mysql如何递归查询所有数据

更多相关免费学习推荐:mysql教程(视频)

mysql递归查询所有数据的方法:

1、创建表

DROP TABLE IF EXISTS `t_areainfo`;CREATE TABLE `t_areainfo` ( `id` int(11) NOT '0' AUTO_INCREMENT, `level` int(11) DEFAULT '0', `name` varchar(255) DEFAULT '0', `parentId` int(11) DEFAULT '0', `status` int(11) DEFAULT '0', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8;

2、初始数据

INSERT INTO `t_areainfo` VALUES ('1', '0', '中国', '0', '0');INSERT INTO `t_areainfo` VALUES ('2', '0', '华北区', '1', '0');INSERT INTO `t_areainfo` VALUES ('3', '0', '华南区', '1', '0');INSERT INTO `t_areainfo` VALUES ('4', '0', '北京', '2', '0');INSERT INTO `t_areainfo` VALUES ('5', '0', '海淀区', '4', '0');INSERT INTO `t_areainfo` VALUES ('6', '0', '丰台区', '4', '0');INSERT INTO `t_areainfo` VALUES ('7', '0', '朝阳区', '4', '0');INSERT INTO `t_areainfo` VALUES ('8', '0', '北京XX区1', '4', '0');INSERT INTO `t_areainfo` VALUES ('9', '0', '北京XX区2', '4', '0');INSERT INTO `t_areainfo` VALUES ('10', '0', '北京XX区3', '4', '0');INSERT INTO `t_areainfo` VALUES ('11', '0', '北京XX区4', '4', '0');INSERT INTO `t_areainfo` VALUES ('12', '0', '北京XX区5', '4', '0');INSERT INTO `t_areainfo` VALUES ('13', '0', '北京XX区6', '4', '0');INSERT INTO `t_areainfo` VALUES ('14', '0', '北京XX区7', '4', '0');INSERT INTO `t_areainfo` VALUES ('15', '0', '北京XX区8', '4', '0');INSERT INTO `t_areainfo` VALUES ('16', '0', '北京XX区9', '4', '0');INSERT INTO `t_areainfo` VALUES ('17', '0', '北京XX区10', '4', '0');INSERT INTO `t_areainfo` VALUES ('18', '0', '北京XX区11', '4', '0');INSERT INTO `t_areainfo` VALUES ('19', '0', '北京XX区12', '4', '0');INSERT INTO `t_areainfo` VALUES ('20', '0', '北京XX区13', '4', '0');INSERT INTO `t_areainfo` VALUES ('21', '0', '北京XX区14', '4', '0');INSERT INTO `t_areainfo` VALUES ('22', '0', '北京XX区15', '4', '0');INSERT INTO `t_areainfo` VALUES ('23', '0', '北京XX区16', '4', '0');INSERT INTO `t_areainfo` VALUES ('24', '0', '北京XX区17', '4', '0');INSERT INTO `t_areainfo` VALUES ('25', '0', '北京XX区18', '4', '0');INSERT INTO `t_areainfo` VALUES ('26', '0', '北京XX区19', '4', '0');INSERT INTO `t_areainfo` VALUES ('27', '0', '北京XX区1', '4', '0');INSERT INTO `t_areainfo` VALUES ('28', '0', '北京XX区2', '4', '0');INSERT INTO `t_areainfo` VALUES ('29', '0', '北京XX区3', '4', '0');INSERT INTO `t_areainfo` VALUES ('30', '0', '北京XX区4', '4', '0');INSERT INTO `t_areainfo` VALUES ('31', '0', '北京XX区5', '4', '0');INSERT INTO `t_areainfo` VALUES ('32', '0', '北京XX区6', '4', '0');INSERT INTO `t_areainfo` VALUES ('33', '0', '北京XX区7', '4', '0');INSERT INTO `t_areainfo` VALUES ('34', '0', '北京XX区8', '4', '0');INSERT INTO `t_areainfo` VALUES ('35', '0', '北京XX区9', '4', '0');INSERT INTO `t_areainfo` VALUES ('36', '0', '北京XX区10', '4', '0');INSERT INTO `t_areainfo` VALUES ('37', '0', '北京XX区11', '4', '0');INSERT INTO `t_areainfo` VALUES ('38', '0', '北京XX区12', '4', '0');INSERT INTO `t_areainfo` VALUES ('39', '0', '北京XX区13', '4', '0');INSERT INTO `t_areainfo` VALUES ('40', '0', '北京XX区14', '4', '0');INSERT INTO `t_areainfo` VALUES ('41', '0', '北京XX区15', '4', '0');INSERT INTO `t_areainfo` VALUES ('42', '0', '北京XX区16', '4', '0');INSERT INTO `t_areainfo` VALUES ('43', '0', '北京XX区17', '4', '0');INSERT INTO `t_areainfo` VALUES ('44', '0', '北京XX区18', '4', '0');INSERT INTO `t_areainfo` VALUES ('45', '0', '北京XX区19', '4', '0');INSERT INTO `t_areainfo` VALUES ('46', '0', 'xx省1', '1', '0');INSERT INTO `t_areainfo` VALUES ('47', '0', 'xx省2', '1', '0');INSERT INTO `t_areainfo` VALUES ('48', '0', 'xx省3', '1', '0');INSERT INTO `t_areainfo` VALUES ('49', '0', 'xx省4', '1', '0');INSERT INTO `t_areainfo` VALUES ('50', '0', 'xx省5', '1', '0');INSERT INTO `t_areainfo` VALUES ('51', '0', 'xx省6', '1', '0');INSERT INTO `t_areainfo` VALUES ('52', '0', 'xx省7', '1', '0');INSERT INTO `t_areainfo` VALUES ('53', '0', 'xx省8', '1', '0');INSERT INTO `t_areainfo` VALUES ('54', '0', 'xx省9', '1', '0');INSERT INTO `t_areainfo` VALUES ('55', '0', 'xx省10', '1', '0');INSERT INTO `t_areainfo` VALUES ('56', '0', 'xx省11', '1', '0');INSERT INTO `t_areainfo` VALUES ('57', '0', 'xx省12', '1', '0');INSERT INTO `t_areainfo` VALUES ('58', '0', 'xx省13', '1', '0');INSERT INTO `t_areainfo` VALUES ('59', '0', 'xx省14', '1', '0');INSERT INTO `t_areainfo` VALUES ('60', '0', 'xx省15', '1', '0');INSERT INTO `t_areainfo` VALUES ('61', '0', 'xx省16', '1', '0');INSERT INTO `t_areainfo` VALUES ('62', '0', 'xx省17', '1', '0');INSERT INTO `t_areainfo` VALUES ('63', '0', 'xx省18', '1', '0');INSERT INTO `t_areainfo` VALUES ('64', '0', 'xx省19', '1', '0');

3、向下递归

利用find_in_set()函数和group_concat()函数实现递归查询:

DROP FUNCTION IF EXISTS queryChildrenAreaInfo;DELIMITER ;;CREATE FUNCTION queryChildrenAreaInfo(areaId INT)RETURNS VARCHAR(4000)BEGINDECLARE sTemp VARCHAR(4000);DECLARE sTempChd VARCHAR(4000);SET sTemp='$';SET sTempChd = CAST(areaId AS CHAR);WHILE sTempChd IS NOT NULL DOSET 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;;DELIMITER ;

4、调用方式

SELECT queryChildrenAreaInfo(1);

3cacb9a917683a33dad9d92047bfc41.png

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

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

098db92f06bde787124702688d7432c.png

5、向上递归

DROP FUNCTION IF EXISTS queryChildrenAreaInfo1;DELIMITER;;CREATE FUNCTION queryChildrenAreaInfo1(areaId INT)RETURNS VARCHAR(4000)BEGINDECLARE 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 DOSET sTemp = CONCAT(sTemp,',',sTempChd);SELECT parentId INTO sTempChd FROM t_areainfo WHERE id = sTempChd;END WHILE;RETURN sTemp;END;;DELIMITER ;

6、调用方式

查询id为”7″的节点的所有上级节点:

SELECT * from t_areainfo where FIND_IN_SET(id,queryChildrenAreaInfo1(7));

fdd1a244b4a565574e7aeb6c380c34f.png

以上就是mysql如何递归查询所有数据的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/191944.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月1日 13:28:11
下一篇 2025年11月1日 13:32:35

相关推荐

  • Migrar de SQLite a MySQL

    我自我介绍一下,我是 alfredo riveros,我已经学习编程多年了,我目前正在 río tercero 高等商学院学习软件开发高级技术员,下面我将描述我面临的挑战遇到了。 正如标题所说,我的目标是将 SQLite 数据库迁移到 MySQL,这是我正在学习的数据库主题中的一个作业。 我选择的数…

    2025年12月13日 好文分享
    000
  • 使用pymysql执行INSERT语句,没有报错但数据未插入数据库,是什么原因?

    pymysql 插入成功却没报错 问题描述 使用 pymysql 执行 insert 语句时,尽管没有报错,但数据却未成功插入数据库。 问题代码 def save_db(cons): db = pymysql.connect(host=’127.0.0.1′, user=’root’, passwo…

    2025年12月13日
    000
  • PyMySQL插入数据未报错却未写入数据库,问题出在哪?

    PyMySQL执行插入却未报错,原因何解? 在使用PyMySQL进行数据库操作时,有时可能会遇到如下情况:执行插入语句却没有报错,但数据却未写入数据库。遇到此问题,首先需要检查代码并了解PyMySQL的工作原理。 PyMySQL使用游标来执行SQL语句。当执行插入语句时,cursor.execute…

    2025年12月13日
    000
  • 为什么我的pymysql插入操作不成功却没有任何报错?

    pymysql执行插入操作不成功且无报错 在使用pymysql执行插入操作时,可能会遇到插入失败但没有收到任何错误提示的情况。这通常是由于代码中存在细微问题导致的。 例如,在上述代码中,插入语句中使用的是.作为占位符,而pymysql要求使用%s。此外,cursor.execute()方法中应该传入…

    2025年12月13日
    000
  • SQLRAG: Transforming Database Interactions with Natural Language and LLMs

    在数据驱动的世界中,速度和洞察力的可访问性至关重要,sqlrag 带来了一种与数据库交互的全新方法。通过利用大型语言模型 (llm) 的强大功能,sqlrag 使用户能够使用自然语言查询数据库,从而无需深厚的 sql 知识。在这篇文章中,我们将深入探讨 sqlrag 的工作原理、其主要功能,以及它如…

    2025年12月13日
    000
  • python怎么写爬虫储存

    使用 Python 编写爬虫的步骤:导入库、发送 HTTP 请求、解析 HTML、提取数据。数据存储选项包括:文件、数据库、云存储。步骤:导入库、发送请求、解析 HTML、提取数据和存储数据。 如何使用 Python 编写爬虫并存储数据 爬虫简介 网络爬虫是一种计算机程序,用于从网站上自动提取和存储…

    2025年12月13日
    000
  • python爬虫怎么写数据

    在Python爬虫中,可通过以下方式写入数据:本地文件:以 CSV、JSON、XML 或数据库文件格式保存数据。数据库:直接连接 MySQL、MongoDB 或 PostgreSQL 等数据库进行写入。API:向外部 API 或服务提交数据。 Python 爬虫中如何写入数据 开门见山: Pytho…

    2025年12月13日
    000
  • 用python模拟火车订票系统

    使用 Python 模拟火车订票系统的方法包括:数据建模:创建 Passenger、Train、Trip 和 Booking 类。数据库连接:使用 SQLAlchemy 连接到数据库。ORM:使用 SQLAlchemy ORM 将数据模型映射到数据库表。用户界面:创建命令行或 GUI 界面以与用户交…

    2025年12月13日
    000
  • SQLMap 备忘单:自动 SQL 注入快速指南

    作者:特里克斯·赛勒斯 什么是 sqlmap?sqlmap是一个开源渗透测试工具,用于检测和利用web应用程序中的sql注入漏洞。它支持各种数据库系统,如 mysql、postgresql、oracle、microsoft sql server 等。 基本用法要开始使用 sqlmap,您可以通过提供…

    2025年12月13日
    000
  • python爬虫的内容怎么去重

    Python 爬虫数据去重有四种常用方法:1. 使用集合(Set);2. 使用字典(Dictionary);3. 使用 Bloom 过滤器;4. 使用外部数据库。具体选择取决于需求和数据量。 Python 爬虫数据去重方法 数据去重是爬虫过程中一项重要的任务,它可以防止重复抓取相同的数据并占用资源。…

    2025年12月13日
    000
  • CSV – 在 Python 中处理本地和远程文件

    编码员们大家好! 本文介绍了一个开源工具,它能够处理本地和远程 csv 文件、加载和打印信息,然后将列映射到 django 类型。当数据集变大、excel不支持自定义报告或通过数据表进行完整数据操作时,通常需要处理csv文件,并且需要api。 当前的功能列表可以进一步扩展,以将 csv 文件映射到数…

    2025年12月13日
    000
  • Python-Jira 票证管理

    您好,我刚刚发现了 jira lib,我决定对其进行测试,以找到获得最多门票的人。 我的github中的代码:https://github.com/victordalet/jira_python_test 一、安装 你只需要python并安装jira lib。 pip install jira 二 …

    2025年12月13日
    000
  • python爬虫入库操作教程

    Python爬虫入库操作包括:建立数据库连接;准备SQL插入语句;执行插入操作;提交事务;关闭连接。 Python 爬虫入库操作教程 引言 Python爬虫入库是指将爬取到的数据保存到数据库(如MySQL、MongoDB)中。这一步骤对于数据分析、机器学习和数据可视化等任务至关重要。本教程将分步介绍…

    2025年12月13日
    000
  • scrapy爬虫数据入库教程

    Scrapy 中的数据库数据保存涉及以下步骤:配置数据库连接(DATABASE_* 设置);创建 Item Pipeline(如 DatabasePipeline);配置 Item Pipeline(ITEM_PIPELINES 中);实现数据保存逻辑(process_item 方法);运行爬虫并检…

    2025年12月13日
    000
  • 使用 PYTHON 将数据导入 MYSQL

    介绍 手动将数据导入数据库,尤其是当数据库中有很多表时,不仅很烦人,而且还很耗时。通过使用 python 库可以使这变得更容易。 从kaggle下载绘画数据集。绘画数据集由 8 个 csv 文件组成,我们将使用简单的 python 脚本将其导入到数据库中,而不是手动将数据导入到数据库表中。 导入数据…

    2025年12月13日
    000
  • 释放 Python 脚本的力量:日复一日的 DevOps 工具系列

    欢迎来到“50 天 50 个 devops 工具”系列的第 28 天!今天,我们将深入探讨 python 脚本世界——这是任何 devops 专业人员的一项关键技能。 python 以其简单性、可读性和广泛的库支持而闻名,已成为自动化任务、管理基础设施和开发可扩展应用程序的重要工具。 为什么 pyt…

    2025年12月13日
    000
  • 软件开发的坚实原则

    在软件开发领域,solid 原则是一组五个设计原则,旨在创建健壮、可维护和可扩展的软件系统。这些原则由 robert c. martin(也称为 bob 叔叔)提出,为开发人员提供了遵循的指南,以确保他们的代码库干净且可扩展。在这里,我们将探索每个 solid 原则,并通过 python 示例演示如…

    2025年12月13日
    000
  • python怎么添加数据库模块

    在 Python 中添加数据库模块涉及以下步骤:安装数据库客户端(如 MySQL:pip install pymysql,PostgreSQL:pip install psycopg2)导入数据库模块(如 import pymysql)创建数据库连接(提供服务器地址、用户名、密码和数据库名称)使用游…

    2025年12月13日
    000
  • python需要哪些软件

    Python开发所需软件:文本编辑器或集成开发环境 (IDE)Python解释器开发工具包 (SDK)数据库访问库(如果需要)可选工具:版本控制系统、单元测试框架、包管理工具、调试器 Python开发所需的软件 要进行Python开发,需要以下软件: 文本编辑器或集成开发环境 (IDE) 文本编辑器…

    2025年12月13日
    000
  • python需要用到数据库吗

    是的,Python 通常需要用到数据库来存储管理数据,原因包括:存储持久性数据、组织查询数据、支持并发访问、维护数据完整性、确保可扩展性。Python 提供多种模块和框架来访问数据库,如 sqlite3、Django 和 SQLAlchemy,支持各种数据库系统,如 MySQL、MongoDB 和 …

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信