📚 每日SQL小知识 🐍
每天花1分钟,解锁一个MQL实用技巧/冷知识!无论是新手还是老手,这里都有让你眼前一亮的编程干货。
✨ 今日主题:WITH RECURSIVE
🗂️ 查询树形/层级数据终极方案
-- 查询所有子部门(无限层级)
WITH RECURSIVE dept_tree AS (
SELECT id, name, parent_id FROM department WHERE id = 1 -- 根节点
UNION ALL
SELECT d.id, d.name, d.parent_id
FROM department d
JOIN dept_tree dt ON d.parent_id = dt.id
)
SELECT * FROM dept_tree;
添加终止条件:
WITH RECURSIVE tree AS (
SELECT id, name, 1 AS depth FROM nodes WHERE parent_id IS NULL
UNION ALL
SELECT n.id, n.name, t.depth + 1
FROM nodes n JOIN tree t ON n.parent_id = t.id
WHERE t.depth < 10 -- 防止无限循环
)
SELECT * FROM tree;
实战场景:
-
组织架构查询
-
评论回复链
-
文件目录树
性能提示:
⚠️ 深度超过5层建议改用应用层处理
你学会了吗?
857

被折叠的 条评论
为什么被折叠?



