Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql with

作者:幸福的起点   发布日期:2025-04-06   浏览:71

WITH RECURSIVE department_hierarchy AS (
    -- 基础查询,选择顶级部门
    SELECT id, name, parent_id, 1 AS level
    FROM departments
    WHERE parent_id IS NULL

    UNION ALL

    -- 递归部分,连接自身以获取子部门
    SELECT d.id, d.name, d.parent_id, dh.level + 1
    FROM departments d
    INNER JOIN department_hierarchy dh ON d.parent_id = dh.id
)

-- 查询结果,展示部门层级结构
SELECT * FROM department_hierarchy;

解释说明:

  1. WITH RECURSIVE: 这是 MySQL 中用于定义公共表表达式 (CTE) 的关键字。RECURSIVE 关键字允许 CTE 进行递归查询。

  2. department_hierarchy: 这是我们定义的 CTE 名称,它将包含部门的层级结构。

  3. 基础查询: 第一部分是从 departments 表中选择所有顶级部门(即 parent_idNULL 的记录),并为这些记录设置层级为 1。

  4. 递归部分: 使用 UNION ALL 将递归查询的结果与基础查询的结果合并。递归部分通过自连接的方式,从上一级部门 (dh) 查找其子部门 (d),并将层级加 1。

  5. 最终查询: 最后,我们从 department_hierarchy CTE 中选择所有记录,展示完整的部门层级结构。

这个例子展示了如何使用递归查询来构建一个部门的层级结构。

上一篇:mysql distinct用法

下一篇:mysql 查看版本

大家都在看

mysqlavg函数保留小数

mysql经纬度距离计算

存储过程mysql

mysql with语句

mysql时间加减

brew 启动mysql

unsigned在mysql中是什么意思

mysql 插入更新

python mysql update

mysql 查看权限

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站