MYSQL8递归

系统中市场需要用到递归功能的多为组织架构。如:部门,职位,推荐关系,地区管理。

  • 上述功能如果在非数据库中处理,翻页就会存在很大问题。导致页面加载很慢,MySQL8提供了CTE
  • 本文以部门举例

查询(父子关系)

WITH RECURSIVE t as
(
  SELECT part_id,part_pid,part_name FROM mo_user_part WHERE part_pid=0
  UNION ALL
  SELECT c.part_id,c.part_pid,CONCAT(t.part_name,'>',c.part_name) part_name FROM mo_user_part c,t WHERE t.part_id=c.part_pid
)
SELECT * FROM t;

  • 递归CTE需要加RECURSIVE关键字,使用Union all来产生结果
SELECT ...定义初始化值,不引用自身, 同时初始化值的列也定义了cte上的列的个数和类型,可以用cast重定义
UNION ALL
SELECT ....返回更多的值,并定义退出循环条件,这里引用了cte自身

查询(子父关系)

WITH RECURSIVE t as
(
  SELECT part_id,part_pid,part_name FROM mo_user_part WHERE part_id=19386136622112
  UNION ALL
  SELECT c.part_id,c.part_pid,CONCAT(c.part_name,'>',t.part_name) part_name FROM mo_user_part c,t WHERE t.part_pid=c.part_id
)
SELECT * FROM t;

posted @   Cloud↓Sky  阅读(251)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示