ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL 8的递归查询

2022-04-28 10:34:59  阅读:202  来源: 互联网

标签:宁乡 city 递归 查询 cte MySQL WHERE id SELECT


先创建一个表,数据如下

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

宁乡市

标签:宁乡,city,递归,查询,cte,MySQL,WHERE,id,SELECT
来源: https://www.cnblogs.com/javafan/p/16201791.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有