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;
相关推荐
云边有个稻草人13 小时前
KingbaseES 高可用集群故障恢复实践与运维落地
数据库·数据安全·高可用集群·故障恢复·国产数据库·kes·运维实践
要做一个小太阳13 小时前
Consul SD 常见标签
运维·数据库·consul
十五年专注C++开发13 小时前
HDF5: 大数据的 “超级容器“
大数据·数据库·c++·hdf5
森叶13 小时前
2026 年 Google SEO 核心机制整合&两类落地页设计指导
数据库
web3.088899913 小时前
tb关键词API接口——解锁独一无二的商品
java·数据库·https
黄昏晓x13 小时前
数据库 ---- 表的约束
android·数据库
Elastic 中国社区官方博客13 小时前
使用 Elastic Observability 和 MCP 的 Agentic 驱动 Kubernetes 调查
数据库·elasticsearch·搜索引擎·云原生·容器·kubernetes·全文检索
阿正的梦工坊13 小时前
DOCKER_DATABASE_URL 逐段解析:部署时候的信息解析
数据库·docker·容器
倒流时光三十年14 小时前
PostgreSQL 大表字段扩长度 -- 会不会锁表?
数据库·postgresql