首页 > 数据库 >MYSQL: 表表达式(CTE)实现递归实例

MYSQL: 表表达式(CTE)实现递归实例

时间:2024-03-12 21:22:37浏览次数:22  
标签:递归 parent cte CTE MYSQL test id name

环境: MYSQL 8.0  + windows 10 

1、在TEST数据库中创建 表CTE_TEST.

CREATE TABLE `test`.`cte_test`(
 test_id INT,
 test_name VARCHAR(50),
 parent_test_id INT,
 created_by INT,
 creation_date TIMESTAMP
 );
 
 例子数据:

 INSERT INTO  `test`.`cte_test`(
 test_id, test_name, parent_test_id
 ) 
 VALUES (1,'A1', NULL),
 (2,'B1',NULL),
 (3,'C3',1),
 (4,'D4',3),
 (5,'E5',3),
 (6,'B7',2),
 (7,'C7',4);
/** 层次结构
   1
  /
  3
  |\
  4 5
  |
  7 
**/
SELECT * FROM  `test`.`cte_test`;

DELETE FROM  `test`.`cte_test`;


WITH recursive RECURSIVE_CTE(test_id, test_name, parent_test_id)
 AS(
SELECT test_id, test_name, parent_test_id
  FROM `test`.`cte_test` cte1
 WHERE  cte1.test_id = 7 
 UNION ALL 
SELECT ct.test_id, ct.test_name, ct.parent_test_id
  FROM `test`.`cte_test`  CT 
 INNER JOIN  RECURSIVE_CTE CTE
  ON CT.test_id = cte.parent_test_id
)
SELECT * FROM RECURSIVE_CTE cte2 
WHERE  cte2.parent_test_id IS NULL  -- 查最顶层的记录行
--  cte2.test_id = 4 
;
 



SELECT * FROM `test`.`all_policies` ap 
WHERE ap.object_name LIKE  '%RCV%' -- 'rcv_transactions'

  SQL SERVER 2008 以上; ORACLE 11G以上, MYSQL 8.0 都可以使用 表表达式实现递归。

 

标签:递归,parent,cte,CTE,MYSQL,test,id,name
From: https://www.cnblogs.com/samrv/p/18069318

相关文章

  • 阳光保险MySQL数据库平稳迁移OceanBase,稳定运营超700天
    作者简介:车东兴:于阳光保险就职,深耕保险行业的IT领域长达12年,对保险领域的基础架构实践有深刻的理解与掌握。熟悉多款数据库,具有丰富的数据库运维经验。王华城:于阳光保险就职,10多年一直从事MySQL数据库的运维工作,在本地及云上数据库部署运维经验丰富,近年来对与MyS......
  • java毕业设计五邑大学超市网上销售软件设计(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,电子商务已经成为现代商业活动中不可或缺的一部分。特别是网上超市销售业务,它借助网络平台突破了传统购物的时间和空间限制,为消......
  • MYSQL 最大连接数
    MYSQL最大连接数?最大连接数也就是mysql服务最大支持多少客户端连接服务查看服务支持最大连接数:showvariableslike'%max_connections%';如下:如何查看MYSQL服务被多少个客户端连接了?showprocesslist;如下: 其中id为13的用户的Command列的状态为Sleep......
  • PowerShell 定时备份MySQL数据
    #========================================================#Function:备份MySQL数据库#ReleaseVersion:v0.0.3#ReleaseDate:2020年8月17日#Author:panda666#Website:www.panda666.com#=====================================......
  • 关于android stdio连接mysql数据库出现过的问题
    根据网上的资料连接mysql数据库的步骤有:1.导入mysql连接jar包我的androidstdio文件里没有libs文件夹,就在build创建了一个,选择jar包,aslibrary,重启下进程,就会生成一些文件2.在mainfest.xml文件下加入网络权限<uses-permissionandroid:name="android.permission.INTERNET"/>......
  • orm——django操作MySQL数据库
    手动新建一个数据库,在setting.py中配置数据库的连接信息DATABASES={"default":{"ENGINE":连接数据库的类型,"NAME":数据库名称,"USER":用户名,"PASSWORD":密码,"HOST":数据库的所在主机ip,......
  • 搭建Apache+PHP+MySQL的Web服务器环境测试PHP时找不到url对象
    检查了apache的服务都是正常运行,配置文件也没有问题,搜了很多方法还是一样,最后发现是新建文本文档时重命名后(文件管理器没有显示后缀名)没有修改文件后缀。关键检查php的隐藏后缀名有没有更改!!!问题的发现浏览器输入http://localhost返回发现目录下我以为是first.php的文件实际上的......
  • mysqld_exporter的安装
    1.需要在数据库上创建对应用户及权限createuser'mysql_monitor'@'%'IDENTIFIEDBY'mysql_monitor';GRANTREPLICATIONCLIENT,PROCESS,SELECTON*.*TO'mysql_monitor'@'%'IDENTIFIEDBY'mysql_monitor';FLUSHPRIV......
  • MySQL(十):MySQL主从复制搭建
    主从复制有一主一从、一主多从、多主一从等多种模式,这里搭建一主一从模式,其他模式搭建过程的类似。1、准备工作准备两台虚拟机,这里准备了两台虚拟机,并在两个节点安装MySQL。192.168.33.55(主节点)192.168.33.11(从节点)mysqlversion:8.0.312、主从复制搭建2......
  • python 递归比较两个文件夹
    以下importfilecmp,osdefcompare_folders(folder1,folder2):dcmp=filecmp.dircmp(folder1,folder2)fornameindcmp.left_only:print(f"{folder1}单独存在的文件:{name}")fornameindcmp.right_only:print(f"{folder......