mysql 5.7 怎么使用sql根据部门id查询当前部门的所以下级部门id
时间: 2024-09-24 17:16:23 浏览: 111
docker mysql5.7 镜像
在MySQL 5.7中,如果你想要通过部门ID查询出当前部门及其所有下级部门的ID,通常可以使用递归查询或者自连接(JOIN)结合子查询来实现。这里假设有一个名为`departments`的表,其中包含`id`(部门ID)和`parent_id`(上级部门ID)字段。
一种可能的方法是使用递归查询(如果MySQL版本支持的话),例如在MySQL 8.0及以上版本:
```sql
WITH RECURSIVE department_hierarchy AS (
SELECT id, parent_id, 1 as level
FROM departments
WHERE id = <当前部门ID>
UNION ALL
SELECT d.id, d.parent_id, dh.level + 1
FROM departments d
JOIN department_hierarchy dh ON d.parent_id = dh.id
)
SELECT * FROM department_hierarchy;
```
将`<当前部门ID>`替换为你实际要查询的部门ID。
另一种方法是使用递归子查询或者临时表,但这需要手动维护层级信息,语法可能会更复杂一些。例如:
```sql
SET @currentDepartmentId = <当前部门ID>;
CREATE TEMPORARY TABLE tempDept (parent_id INT);
INSERT INTO tempDept
SELECT parent_id FROM departments WHERE id = @currentDepartmentId;
INSERT INTO tempDept
(SELECT d.parent_id
FROM departments d
JOIN tempDept t ON d.id = t.parent_id);
SELECT DISTINCT parent_id FROM tempDept;
```
再次强调,以上SQL示例假设`parent_id`为0表示根部门。
阅读全文