部门表中有部门id和pid 如何根据所在部门id去查询所有上级部门 用sql实现
假设部门表名为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作为查询结
原文地址: https://www.cveoy.top/t/topic/cQY1 著作权归作者所有。请勿转载和采集!