首页 > 数据库 >递归SQL的写法

递归SQL的写法

时间:2023-06-05 14:34:04浏览次数:36  
标签:pv parent 递归 id SQL 写法 ID SELECT


 1.递归查询某一节点的无限级子集(不含自身)。

# 功能:递归查询某一节点的无限级子集。
# 参数说明:
# 表名:organization 
# 父ID字段:parent_id
# 主键ID字段:id
# 顶层ID值:1604
SELECT
	* 
FROM
	( SELECT * FROM organization ) A,
	( SELECT @pv := '1604' ) B 
WHERE
	find_in_set( parent_id, @pv ) 
	AND length(
	@pv := concat( @pv, ',', id ))

2.反向递归查询某一节点的无限级直属上级(包含自身)。

# 功能:反向递归查询本级及所有直属上级
# 参数说明:
# 表名:topo_tree 
# 父ID字段:parent_id
# 主键ID字段:id
# 底层ID示例值:15
SELECT
	T2.* 
FROM
	(
	SELECT
		@r AS _id,
		( SELECT @r := parent_id FROM topo_tree WHERE id = _id ) AS parent_id,
		@l := @l + 1 AS lvl 
	FROM
		( SELECT @r := 15, @l := 0 ) vars,
		topo_tree h 
	WHERE
		@r <> 0 
	) T1
	JOIN topo_tree T2 ON T1._id = T2.id 
ORDER BY
	T1.lvl DESC;

标签:pv,parent,递归,id,SQL,写法,ID,SELECT
From: https://blog.51cto.com/u_14121041/6415444

相关文章

  • React 动态菜单-不限级递归菜单树
    import{FC,useState}from"react";import{Layout,Menu}from'antd';import{Link}from'react-router-dom'import{getData}from"../../mock-data";const{Header,Content,Footer,Sider}=Layout;//菜单数据结构type......
  • Docker-compose一键部署安装confluence+sql数据库(附数据迁移方法)
    Docker-compose部署安装confluence并进行数据迁移 目录Docker-compose部署安装confluence并进行数据迁移一、部署confluence和postgresql二、激活confluence三、confluence数据迁移恢复 一、部署confluence和postgresql下载confluence镜像和postgresql镜像资......
  • mysql数据自动备份脚本
    #!/bin/bash#日期date=$(date'+%Y%m%d')#设置备份目录和保留天数backup_dir="/opt/dbback"retention_days=7#数据库账密muser=mpasswd=mhost=#创建备份目录(如果不存在)mkdir-p$backup_dir#获取当前时间戳now=$(date+%s)#备份MySQL数据库到备份目......
  • MySQL数据库表结构优化方式详解
    前言从今天开始本系列文章就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深,全面讲解数据库体系。非常适合零基础的小伙伴来学习。全文大约【2083】字,不说废话,只讲可以让你学到技术、明白原理的纯干......
  • SQL注入三连实战绕过WTS-WAF
    一键三连,sql注入一次无意之间发现的sql注入,主要是因为有一个WTS-WAF,在此记录一下只是友好测试,并非有意为之。。。。牛刀小试1手注判断字段数测试到orderby15的时候出现了报错,那么就可以说明字段数为14http://www.xxx.com/xxx.php?id=22%20order%20by%2014http://www.x......
  • ORM核心功能之导航属性- EFCore和 SqlSugar
    导航属性导航属性是作为ORM核心功能中的核心,在SqlSugar没有支持导航属性前,都说只是一个高级DbHelper,经过3年的SqlSugar重构已经拥有了一套非常成熟的导航属性体系,本文不是重点讲SqlSugar而是重点讲导航属性的作用,让更多写Sql人还未使用ORM的人了解到ORM的作用。 1.复杂的查......
  • Mysql 主从备份 Last_Errno: 1146 Last_Error: Error executing row event: 错误问题
    本人在做主从备份的时候发现了此问题! 1主数据库是已经把这个表删除了丛数据库也是没有备份这个表但是一直报这个错原因是bin-log日志有这个表 但是没记录到已经把这个表删除了 主从表同步实际从库是根据主库的bin-log二进制的SQL进行执行的 这是Mysql的一个BUG1......
  • JavaScript 递归的简单例子
     typescript+vue3functionflattenTree(tree:any,result:any){tree.forEach((node:any)=>{result.push({id:node.id,cat_name:node.cat_name,cat_name_en:node.cat_name_en});if(node.child.length>0){flattenTree(node.child,r......
  • mysql 8.0 解压版安装以及安装版更改密码
    解压版:下载地址https://dev.mysql.com/downloads/mysql/在根目录下创建文本文档,并重命名为my.ini文件 使用文本编辑器打卡my.ini,将下面内容复制进去[mysqld]#validate_password密码校验#plugin-load-add=validate_password.dll#connection_control登录超时插件#p......
  • PostgreSQL中使用动态SQL-实现自动按时间创建表分区
    PostgreSQL中通过继承,可以支持基本的表分区功能,比如按时间,每月创建一个表分区,数据记录到对应分区中。按照官方文档的操作,创建子表和index、修改trigger等工作都必须DBA定期去手动执行,不能实现自动化,非常不方便。尝试着通过在plpgsql代码中使用动态SQL,将大表分区的运维操作实现......