mysql 中with的用法(2)
mysql 中with的用法(2)
with递归练习主要用于表里面包含父节点id之类的
查询出对应的省份和市。
建表
CREATE TABLE tb(id VARCHAR(3), pid VARCHAR(3), name VARCHAR(64));INSERT INTO tb VALUES('002', 0, '浙江省');
INSERT INTO tb VALUES('001', 0, '广东省');
INSERT INTO tb VALUES('003', '002', '衢州市');
INSERT INTO tb VALUES('004', '002', '杭州市');
INSERT INTO tb VALUES('005', '002', '湖州市');
INSERT INTO tb VALUES('006', '002', '嘉兴市');
INSERT INTO tb VALUES('007', '002', '宁波市');
INSERT INTO tb VALUES('008', '002', '绍兴市');
INSERT INTO tb VALUES('009', '002', '台州市');
INSERT INTO tb VALUES('010', '002', '温州市');
INSERT INTO tb VALUES('011', '002', '丽水市');
INSERT INTO tb VALUES('012', '002', '金华市');
INSERT INTO tb VALUES('013', '002', '舟山市');
INSERT INTO tb VALUES('014', '004', '上城区');
INSERT INTO tb VALUES('015', '004', '下城区');
INSERT INTO tb VALUES('016', '004', '拱墅区');
INSERT INTO tb VALUES('017', '004', '余杭区');
INSERT INTO tb VALUES('018', '011', '金东区');
INSERT INTO tb VALUES('019', '001', '广州市');
INSERT INTO tb VALUES('020', '001', '深圳市')
解决办法:
WITH RECURSIVE cte AS (SELECT id,name FROM tb WHERE id in ('001','002')UNION ALLSELECT k.id, CONCAT(c.name,'->',k.name) AS name FROM tb k INNER JOIN cte c ON c.id = k.pid)
SELECT * FROM cte ORDER BY NAME;
最新文章
- PC电源常见故障判断分析与排除
- 振南技术干货集:深入浅出的Bootloader(1)
- 【数据结构】经典单链表OJ题!!
- 基于机器学习的卫片航片变化检测
- MySQL为什么Spring的jdbcTemplate.batchUpdate()这么慢?
- 【Mysql系列】Mysql基础篇
- thinkphp6 只有默认页能访问 其他404 其他模块404
- thinkphp5 连接多个服务器数据库
- Python 框架学习 Django篇 (十) Redis 缓存
- LabVIEW中NIPackageManager功能介绍
- C#,数值计算——多项式计算,Poly的计算方法与源程序
- [100天算法】
- Qt高级
- css3 初步了解
- Linux下MSSQL (SQL Server)数据库无法启动故障处理
- C语言求数组中出现次数最多的元素
- 机器视觉系统的组成