当前位置: 首页 > news >正文

SQL学习:WITH RECURSIVE

SQL学习:WITH RECURSIVE

  • 什么是WITH RECURSIVE:

    • WITH RECURSIVE(递归 CTE)用于在 SQL 中写递归查询,常见场景如层级结构(组织、分类树)、序列生成等。
  • 基本语法结构:

    WITH RECURSIVE cte_name AS (-- 1. 基础查询(初始层)SELECT ...FROM ...WHERE ...   -- 起点条件UNION ALL-- 2. 递归部分(下一层如何生成)SELECT ...FROM ...JOIN cte_name ON ...   -- 递归条件
    )
    SELECT * FROM cte_name;

    递归 CTE 一定包含两部分:

    • Anchor(锚点):第一次取什么数据;

    • Recursive(递归):如何从上一层继续往下走;

  • 例子1:查询所有子级(树型数据)

    假设有一张员工表:employees
    ---------
    id
    name
    manager_id  -- 上级 ID
    
  • 查询某人(例如 id = 1)的所有下属:

    WITH RECURSIVE all_subs AS (-- 1. 锚点:从这个员工开始SELECT id, name, manager_idFROM employeesWHERE id = 1UNION ALL-- 2. 递归:找所有下级SELECT e.id, e.name, e.manager_idFROM employees eJOIN all_subs s ON e.manager_id = s.id
    )
    SELECT * FROM all_subs;
  • 例子2:生成从 1 到 10 的数字序列

    WITH RECURSIVE nums AS (SELECT 1 AS n      -- 起点UNION ALLSELECT n + 1FROM numsWHERE n < 10       -- 递归终止条件
    )
    SELECT * FROM nums;
  • 注意点:

    • 注意点 说明
      必须有停止条件 否则会无限循环
      UNION ALL > UNION 常用 UNION ALL,更快也允许重复
      需要数据库支持 MySQL 8.0+、PostgreSQL、SQLite、MariaDB 10.2+等
http://www.gsyq.cn/news/53127.html

相关文章:

  • 【哲学思考】我常用的方法论
  • 30、cp 、mv 命令
  • linux apache php配置
  • [随笔15] 日常杂事 - 枝-致
  • linux android环境搭建
  • linux android环境
  • 设置word中第一页不显示页码,第二页页码从1开始
  • 2025年度塑料回收行业领军企业TOP5,塑料回收排行综合实力与口碑权威评选
  • 2025成都留学机构十强名单排名
  • P5658 [CSP-S 2019] 括号树 题解
  • Python 机器学习03 - 常见分类算法
  • 2025年全年度隔热条品牌权威排名榜单:若克斯新材料领跑行业
  • 用Python代码理解和实现简单的神经网络
  • Java哈希表入门详解(Hash) - 指南
  • AE/PR电影级视频调色插件 Shift for Adobe V1.2 Win附使用教程
  • 2025年不锈钢桥梁防护栏生产厂家权威推荐:201不锈钢桥梁护栏/不锈钢桥梁护栏杆/桥梁不锈钢防撞护栏源头厂家精选
  • 2025 最新年教务管理系统软件公司推荐!教培机构教务管理系统软件公司口碑排行榜,覆盖多校区 / 连锁 / 学科类 / 文化课机构优质解决方案
  • 区块链交易所中心化架构与风控体系详解
  • 2025 年无锡短视频拍摄公司推荐,企拓网络 14 年深耕新媒体营销,短视频全案运营赋能企业高效拓客
  • linux android 环境变量
  • 2025年贴标机生产厂家权威推荐榜单:直角贴标机/自动贴标机/矿泉水贴标机源头厂家精选
  • 2025年双车道双翻集装箱翻转机厂家权威推荐榜单:20吨集装箱翻转机/双车道单翻集装箱翻转机/40尺集装箱翻转机源头厂家精选
  • springboot~通过集成测试来理解Accept和Content-Type
  • 【马来西亚理工大学主办,SPIE出版】2025年量子计算与通信技术国际学术会议(ICQCT 2025)
  • 详细介绍:Next steps for BPF support in the GNU toolchain
  • 2025成都留学中介机构排名前十
  • 2025美国留学开除处理机构推荐,靠谱申诉/转学/身份保障服务哪家好
  • 【马来亚大学主办,SPIE出版,快至会后4个月检索】2025年医学图像处理与识别国际会议(IPOR 2025)
  • 2025年不锈钢垃圾桶实力厂家权威推荐榜单:金属垃圾桶源头厂家精选
  • C#Lazy