SQL中的公用表表达式

公用表表达式(CTE)

相当于可以复用的子查询

  1. 普通公用表表达式

    sql 复制代码
    # 查询员工表中所有员工的部门详细信息
    WITH cte_emp
    AS
    (SELECT DISTINCT department_id FROM employees);
    
    SELECT *
    FROM departments d JOIN cte_emp e
    ON d.department_id = e.department_id;
  2. 递归公用表表达式

    sql 复制代码
    # 找出公司中所有的下下属
    # 找到第一代管理者(老大)
    WITH RECURSIVE cte
    AS
    (SELECT employee_id, last_name, manager_id, 1 AS n
    FROM employees
    WHERE employee_id = 100;
    UNION ALL
    SELECT a.employee_id, a.last_name, a.manager_id, n+1
    FROM employees AS a JOIN cte
    ON a.manager_id = cte.employee_id
    )
    
    SELECT employee_id, last_name
    FROM cte
    WHERE n >= 3;
相关推荐
Nturmoils8 小时前
GROUP BY 先别想当然,查汇总前把规则跑清楚
数据库
最笨的羊羊9 小时前
Oceanbase数据库系列之:向量数据库核心知识
数据库·oceanbase
fish_xk9 小时前
mysql中的表的约束
数据库·mysql
谢亮_vipxieliang9 小时前
Go Channel 高级模式——从底层原理到扇出扇入实战
java·数据库·golang
ggaofeng10 小时前
自己编写邮件服务器和客户端
数据库
java1234_小锋10 小时前
【技术专题】Mysql8 数据库 - Mysql8 添加,更新,删除数据
数据库·mysql
PaperData10 小时前
2015-2024年各省绿色贸易数据
数据库
小羊没烦恼!11 小时前
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
java·开发语言·前端·数据库·算法·c#
麦壳饼11 小时前
深入探讨:SonnetDB 的文件格式与存储布局
数据库·sonnetdb
for_ever_love__12 小时前
Redis 持久化讲透:RDB、AOF 与混合持久化怎么选
java·数据库·redis·持久化·aof·区别·rdb