首页 > 数据库 >MySQL函数查询目录树问题记录

MySQL函数查询目录树问题记录

时间:2024-05-27 19:34:10浏览次数:16  
标签:DEFAULT pid child 目录 查询 MySQL xzqh NULL id

DELIMITER //  
  
CREATE FUNCTION `getChildXzqhList`(rootId BIGINT) RETURNS VARCHAR(4000)  
BEGIN  
    SET SESSION group_concat_max_len = 1000000;  -- 设置为1MB  设置 GROUP_CONCAT 函数输出的最大长度大小,太小的话整体会被截掉
      
    RETURN (  
        WITH RECURSIVE child_nodes AS (  
            SELECT id  
            FROM xzqh_info  
            WHERE id = rootId  
            UNION ALL  
            SELECT xz.id  
            FROM xzqh_info xz  
            JOIN child_nodes cn ON xz.pid = cn.id  
        )  
        SELECT GROUP_CONCAT(id ORDER BY id SEPARATOR ',') AS ids  
        FROM child_nodes  
        LIMIT 1  
    );  
END //  
  
DELIMITER ;

整体数据表的话是一张行政区域的索引表,整体呈现树状结构分布。通过定义的MySQL 函数的方式实现对复杂操作实现的封装。

CREATE TABLE `xzqh_info` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `pid` bigint DEFAULT NULL,
  `rank` int DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `short_name` varchar(255) DEFAULT NULL,
  `remark` varchar(255) DEFAULT NULL,
  `child` text,
  `create_at` datetime DEFAULT NULL,
  `update_at` datetime DEFAULT NULL,
  `delete_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_id_pid` (`id`,`pid`) USING BTREE,
  KEY `xzqh_btree` (`pid`,`id`,`name`,`rank`) COMMENT '行政区域表的索引'
) ENGINE=InnoDB AUTO_INCREMENT=999901 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='行政区划';

 

标签:DEFAULT,pid,child,目录,查询,MySQL,xzqh,NULL,id
From: https://www.cnblogs.com/supperlhg/p/18216314

相关文章

  • Linux如何在目录下灵活创建、浏览、删除百万个文件
    目录一、创建百万级小文件1、单核CPU情况2、多核CPU情况3、执行效率对比3.1、单核的顺序执行3.2、多核的并发执行二、如何列出/浏览这些文件1、查看目录下文件的数量2、列出?3、ls-f(关闭排序功能)3.1、执行效率对比4、通过重定向导入到文件中浏览对应的文件名三、如何快速删除目录......
  • MySQL--备份恢复
    目录一、备份恢复的工作职责1.备份的时间周期2.备份的方式3.恢复方案4.检查备份5.定期恢复演练6.故障恢复策略7.迁移升级二、逻辑备份工具--mysqldump1.介绍2.使用场景3.mysqldump命令的参数介绍1)全备:2)单库或多库备份:--常用3)备份某个库下的单表或多表:--不常用4......
  • centos 7 安装mysql5.7
    1.在线安装,有时安装失败,可能是自动选择镜像时问题sudoyumlocalinstallhttps://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmsudoyuminstallmysql-community-servermysql-community-client启动mysql:sudosystemctlstartmysqld停止mysql:sudo......
  • mysql定时备份数据库
    一、使用navicat进行自动备份1、选择自动运行;2、创建批处理作业;3、选中需要操作的数据库;4、保存;1、设置任务计划;2、新建触发器;3、选择执行时间;完成这些之后,就可以了。 mysqldump 命令使用mysqldump命令备份数据库mysqldump-uroot-p123456(需要备份的数据库)>E:/%da......
  • MySQL - [05] 需求&场景
      一、生成测试数据(1)首先,有表如下createtableapp_user(`id`bigint(20)notnullauto_incrementcomment'用户id',namevarchar(50)notnullcomment'用户名',emailvarchar(50)comment'邮箱',phonevarchar(20)comment'......
  • MySQL中UPDATE JOIN
    在MySQL数据库中,UPDATE语句用于修改表中现有的记录。有时,我们需要根据另一个相关联表中的条件来更新表中的数据。这时就需要使用UPDATEJOIN语句。最近我们遇到了这样的需求:我们有一张历史记录表,其中一个字段记录了用,连接的多个用户账号。现在,我们添加了一列,需要将这些账号翻译为......
  • MySQL - [03] 数据库引擎
    所有的数据库文件都存在data目录下,本质还是文件的存储。  --建表时指定编码格式为中文utf-8CREATETABLEIFNOTEXISTS`student`( `id`INT(4)NOTNULLAUTO_INCREMENTCOMMENT'学号', `name`VARCHAR(30)NOTNULLDEFAULT'匿名'COMMENT'姓名', `pwd`VARCHA......
  • 部署经典黄金架构LAMP----编译安装MySQL----2
    版本要求:mysql-5.6.49安装目录:/usr/local/msyql数据目录:/usr/local/msyql/data端口:33061、检查是否安装了mariadb(如果有会返回,给它卸载了) [root@localhostlocal]#rpm-qa|grep-imariadbmariadb-libs-5.5.65-1.el7.x86_64[root@localhostlocal]#rpm-qa|grep-im......
  • mysql常用命令
    连接mysqlmysql-ualgorithm-hxxx-P11234-pxxx添加索引altertablewiki_update_infoaddindexidx_url(url);查看阻塞进程select*frominformation_schema.innodb_trx;常用语句selectt1.post_uuid,t1.urlfromwiki_analysis_infoast1fulljoinwiki_link_info......
  • mongodb查询平级数据,返回树形结构
    #mongodb查询数据,只返回一级、二级树形结构,子级数据对象整个返回db.t_ythgk_zd.aggregate([//1.匹配指定的dmlx{$match:{sjdm:"YTHGK_DIC_00002",yxx:1}},//2.查找上级代码(sjdm)对应的文档,并构建一个子文档数组{$lookup:{from:"t......