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;
WITH
语句用于定义一个或多个临时结果集(也称为公用表表达式,CTE),这些结果集可以在后续的查询中引用。RECURSIVE
关键字表示这是一个递归查询。递归查询通常用于处理层次结构数据,例如组织结构中的部门关系。department_hierarchy
的递归 CTE,它从 departments
表中选择数据。parent_id
为 NULL
的部门),并将它们的层级设置为 1。SELECT
语句从递归 CTE 中获取完整的部门层级结构。如果你需要更多关于 WITH
语句的帮助或有其他问题,请告诉我!
上一篇:mysql时间加减
下一篇:存储过程mysql
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站