LEVEL
函数是一个在分层查询中使用的特殊函数,用于返回当前行在分层结构中的层级
以下是一个使用 LEVEL
函数解决层级排序问题的示例:
WITH RECURSIVE org_hierarchy (employee_id, manager_id, employee_name, level) AS (
SELECT employee_id, manager_id, employee_name, 1
FROM employees
WHERE manager_id IS NULL
UNION ALL
SELECT e.employee_id, e.manager_id, e.employee_name, oh.level + 1
FROM employees e
JOIN org_hierarchy oh ON e.manager_id = oh.employee_id
)
SELECT employee_id, manager_id, employee_name, level
FROM org_hierarchy;
在这个示例中,我们首先创建了一个名为 org_hierarchy
的递归公共表表达式(CTE)。这个 CTE 包含四个列:employee_id
、manager_id
、employee_name
和 level
。level
列是我们用来存储每个员工在组织结构中的层级的列。
我们首先从根节点开始,即没有经理的员工(manager_id IS NULL
)。然后,我们使用 UNION ALL
将子查询与递归部分连接起来。在递归部分,我们将每个员工的直接下属添加到结果集中,并将其层级设置为其经理的层级加 1。
最后,我们从 org_hierarchy
CTE 中选择所有列,以显示每个员工及其在组织结构中的层级。