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;
最新文章
- 电脑故障速查方法
- Istio学习笔记
- YOLOv8
- 关于start
- linux中mysql下mysqldump命令常见用法详解
- [量化投资
- CNKI上最新硕士博士论文pdf格式文件owner密码找回难度
- Jenkins Docker Swarm插件 配置的坑
- 数据校验:Spring Validation
- Selenium+JQuery定位方法及应用
- 数字人部署之VITS+Wav2lip数据流转处理以提高实时性
- GraphQL 与 REST 双重赋能:Hasura 帮你给数据库添加接口
- QML16、从 C++ 定义 QML 类型
- 【HBZ分享】ES的聚合函数汇总
- 20.1 platform 设备驱动
- 重复性工作自动化解决方案——影刀
- VuePress介绍及使用指南