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;
最新文章
- 解决脑蓝屏问题的五个方法
- Windows隐藏工具可以修复90%的死亡蓝屏
- 巨量千川「全域推广」指南来袭!助力商家开拓新流量
- 【OpenCV(3)】linux arm aarch 是 opencv 交叉编译与使用
- XSelect清空选中值
- 基于ssm的学生档案管理系统(有报告)。Javaee项目,ssm项目。
- 推动海洋经济高质量发展
- 深度学习:多模态与跨模态
- 了解防抖和节流:提升前端交互体验的实用策略
- Selenium+JQuery定位方法及应用
- SQL学习(CTFhub)整数型注入,字符型注入,报错注入
- 面试算法题之合并系列
- 逐帧动画demo
- Android 11.0 系统sim卡5G 信号格数对应的信号强度值修改
- Django——路由层
- Windows 微PE WePE
- Java可以传入任意类的公共类写法