假设部门表名为 'dept',部门 ID 为 'dept_id',上级部门 ID 为 'parent_id',可以使用递归查询实现:

WITH RECURSIVE dept_tree AS (
    SELECT dept_id, parent_id
    FROM dept
    WHERE dept_id = [所在部门id]
    UNION ALL
    SELECT d.dept_id, d.parent_id
    FROM dept_tree dt
    JOIN dept d ON dt.parent_id = d.dept_id
)
SELECT dept_id
FROM dept_tree;

解释:

  • 使用 WITH RECURSIVE 关键字声明一个名为 'dept_tree' 的递归查询,该查询包含两个子查询。
  • 第一个子查询查询所在部门的 'dept_id' 和 'parent_id',作为递归查询的起点。
  • 第二个子查询查询 'dept_tree' 的 'parent_id' 所对应的上级部门的 'dept_id',直到 'parent_id' 为空,即到达了最高级部门。
  • 最终查询从 'dept_tree' 中选取 'dept_id' 作为查询结果。
SQL 递归查询:如何根据部门 ID 获取所有上级部门

原文地址: https://www.cveoy.top/t/topic/nAms 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录