添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

二、表结构和数据背景

类型 注释
name varchar 标签名称
code varchar 标签code
parent_code varchar 父级标签code
level int 层级

label表中,level字段代表层级,更直观给大家展示数据
code是唯一标识
parent_code代表它的父级

现有数据如下

name code parent_code level
第一级标签 L001 1
第二级标签 L002 L001 2
第三级标签1 L003 L002 3
第四级标签1 L004 L003 4
第三级标签2 L005 L002 3
第四级标签2 L006 L005 4

数据结构如下

第一级标签
└─ 第二级标签 (L002)
├─ 第三级标签1 (L003)
│ └─ 第四级标签1 (L004)
└─ 第三级标签2 (L005)
└─ 第四级标签2 (L006)

三、具体SQL实现

传入最上层code,递归查询所有子节点

WITH RECURSIVE cte AS (
SELECT * FROM label WHERE code = '最上层的code'
UNION ALL
SELECT t.* FROM label t JOIN cte c ON t.parent_code = c.code
SELECT * FROM cte;

传入最上层code,递归删除最上层节点和对应所有子节点

WITH RECURSIVE cte AS (
SELECT code, parent_code FROM label WHERE code = '最上层的code'
UNION ALL
SELECT l.code, l.parent_code FROM label l INNER JOIN cte ON l.parent_code = cte.code
DELETE FROM label WHERE code IN (SELECT code FROM cte);
项目遇到一个需求,要求查处菜单节点的所有节点,在网上查了一下,大多数的方法用到了存储过程,由于线上环境不能随便添加存储过程,
因此在这里采用类似递归的方法对菜单的所有子节点进行查询。
创建menu表:
CREATE TABLE `menu` (
 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜单id',
 `parent_id` int(11) DEFAULT NULL COMMENT '父节点id',
 `menu_name` varchar(128) DEFAULT NULL COMMENT '菜单名称',
 `menu_ur
mysql递归查询所有子节点
不说多余的废话,直接先创建递归函数:
DROP FUNCTION IF EXISTS queryChildrenAreaInfo;DELIMITER ;;
CREATE FUNCTION queryChildrenAreaInfo(areaId VARCHAR(100))
RETURNS VARCHAR(4000)
BEGIN
DECLARE sTemp VARCHAR(4000);
DECLARE sTempChd V
                解决docker push/pull 报错unauthorized: access to the requested resource is not authorized
                    hhwhhwhhwhhw444: 
                    怎么设置密码
                【笔记】IDEA Project窗口与代码编辑区域相互切换
                    zzh969: 
                    如果代码区域分了两个窗口呢?
                docker安装sonarqube(含mysql和postgresql连接方式)
                    会测试的鲸鱼: 
                    运行mysql的命令写错了。
                Minio工具类 - Java
                    LiAngjuang: 
                    博主你好,使用minio进行分片上传后,下载需要取出所有的分片进行合并,这个过程会不会导致OOM的产生呢?