标签:宁乡 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。