MYSQL 8.0 新特性-递归CTE

直接生成连续的数字

WITH recursive a (x) AS 
( SELECT 1 
UNION ALL
SELECT x + 1 FROM a WHERE x < 10 ) 
SELECT * FROM a;

在这里插入图片描述

层级查询

测试数据示例

图形展示如下
在这里插入图片描述
数据库数据如下

id name parent_id
1 a
2 b 1
3 c 1
4 d 2
5 e 3
6 f 3
WITH RECURSIVE a(id,name,parent_id,path) AS 
(
SELECT 
	id,name,parent_id,name as path 
FROM 
	test1
--
UNION ALL
SELECT 
	a.id,a.name,b.parent_id,concat(b.name,"->",path) as path 
FROM 
	a,test1 b 
WHERE 
	a.parent_id is not null 
	and 
	a.parent_id=b.id
) 
SELECT id,name,path FROM a where parent_id is null;

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章