mysql 5.7版本 怎么使用sql根据部门id查询当前部门的所以下级部门id
时间: 2024-09-24 11:16:31 浏览: 88
在MySQL 5.7中,如果你想要根据部门ID查询出所有直接下级部门及其子部门的ID,这通常涉及到递归查询或者使用存储过程来实现。这里假设有一个名为`departments`的表,其中包含`id`, `parent_id`(父部门ID)等字段,并且每个部门都有一个递归结构。你可以尝试使用以下SQL查询:
```sql
WITH RECURSIVE department_hierarchy AS (
SELECT id, parent_id, @path := @path + '/' + id as path
FROM departments
WHERE id = <你的起始部门ID> -- 需要查询的父部门ID
CROSS JOIN (SELECT @path := '') s
UNION ALL
SELECT d.id, d.parent_id, @path
FROM departments d
JOIN department_hierarchy dh ON d.parent_id = dh.id
)
SELECT id
FROM department_hierarchy
WHERE path LIKE CONCAT('<你的起始部门ID>', '%')
ORDER BY path;
```
在这个查询中,我们使用了递归公共表表达式(Recursive Common Table Expression, RCTE)来构建部门树。首先从指定的根部部门开始,然后逐步获取其下级部门,直到所有的后代都被包括进来。
注意替换 `<你的起始部门ID>` 为实际的部门ID。此外,这个查询可能会对性能产生影响,如果部门层级很深或者数据量很大,因为它需要多次扫描表。
阅读全文