MySQL 8的递归查询

先创建一个表,数据如下

SELECT * FROM t_city WHERE parent_id = '430100';

id

parent_id

name

430101

430100

市辖区

430102

430100

芙蓉区

430103

430100

天心区

430104

430100

岳麓区

430105

430100

开福区

430111

430100

雨花区

430112

430100

望城区

430121

430100

长沙县

430124

430100

宁乡县

430181

430100

浏阳市

430182

430100

宁乡市

 

第一种情况:自底往上递归查询

WITH RECURSIVE cte_city AS(

SELECT * FROM t_city WHERE NAME = '宁乡市'

UNION ALL

SELECT u.* FROM t_city u, cte_city t WHERE u.id = t.parent_id

)

SELECT * FROM cte_city;

id

parent_id

name

430182

430100

宁乡市

430100

430000

长沙市

430000

000000

湖南省

 

第二种情况:从下向下查询

WITH RECURSIVE cte_city AS(

SELECT * FROM t_city WHERE NAME = '长沙市'

UNION ALL

SELECT u.* FROM t_city u, cte_city t WHERE u.parent_id = t.id

)

SELECT * FROM cte_city;

id

parent_id

name

430100

430000

长沙市

430101

430100

市辖区

430102

430100

芙蓉区

430103

430100

天心区

430104

430100

岳麓区

430105

430100

开福区

430111

430100

雨花区

430112

430100

望城区

430121

430100

长沙县

430124

430100

宁乡县

430181

430100

浏阳市

430182

430100

宁乡市

posted @ 2022-04-28 10:16  黑格  阅读(627)  评论(0编辑  收藏  举报