mysql判断list部门集合中的每个部门是否有子孙部门
时间: 2024-03-09 15:45:13 浏览: 80
基于PHP+Mysql开发的网校部门信息登记系统源码.zip
5星 · 资源好评率100%
可以通过循环查询每个部门的所有后代部门,来判断list部门集合中的每个部门是否有子孙部门。具体实现可以使用 MySQL 的递归查询功能结合循环语句来完成。以下是示例代码:
```
SET @dept_list = '[部门id列表]';
SET @dept_count = LENGTH(@dept_list) - LENGTH(REPLACE(@dept_list, ',', '')) + 1;
SET @i = 1;
SET @sub_dept_count = 0;
WHILE (@i <= @dept_count) DO
SET @dept_id = SUBSTRING_INDEX(SUBSTRING_INDEX(@dept_list, ',', @i), ',', -1);
WITH RECURSIVE sub_dept(id) AS (
SELECT id FROM departments WHERE id = @dept_id
UNION ALL
SELECT d.id FROM departments d JOIN sub_dept sd ON d.parent_id = sd.id
)
SELECT COUNT(*) - 1 INTO @count FROM sub_dept;
SET @sub_dept_count = @sub_dept_count + @count;
SET @i = @i + 1;
END WHILE;
SELECT @sub_dept_count;
```
该代码首先定义了一个部门id列表变量 @dept_list,以及列表中部门数量变量 @dept_count。然后使用循环语句,对每个部门id进行查询,计算其所有子孙部门数量,并将结果累加到变量 @sub_dept_count 中。最后返回 @sub_dept_count,即为这些部门的子孙部门数量。若结果为0,则表示这些部门都没有子孙部门。
阅读全文