mysql 循环 获取部门下面所有子级部门ID
2018-04-04 16:34
375 查看
需求,入参一个部门ID,获取下面所有的自己部门ID
实现方式通过创建mysql函数 直接上代码
CREATE DEFINER = 'root'@'%'
FUNCTION db.fun_getChildrenDeptId(`did` INT)
RETURNS varchar(10000) CHARSET utf8
BEGIN
DECLARE sTemp VARCHAR(10000);
DECLARE sTempChd VARCHAR(10000);
SET sTemp = '';
SET sTempChd = cast(did AS CHAR);
SET SESSION group_concat_max_len = 5000000;
WHILE sTempChd IS NOT NULL
DO
IF sTemp = '' THEN
SET sTemp = sTempChd;
ELSE
SET sTemp = concat(sTemp, ',', sTempChd);
END IF;
SELECT group_concat(depart_id)
INTO
sTempChd
FROM
yd_comp_depart_info
WHERE
find_in_set(parent_id, sTempChd) > 0;
END WHILE;
RETURN sTemp;
END
注:尽量设置group_concat_max_len 值,因为group_concat函数默认长度1024
实现方式通过创建mysql函数 直接上代码
CREATE DEFINER = 'root'@'%'
FUNCTION db.fun_getChildrenDeptId(`did` INT)
RETURNS varchar(10000) CHARSET utf8
BEGIN
DECLARE sTemp VARCHAR(10000);
DECLARE sTempChd VARCHAR(10000);
SET sTemp = '';
SET sTempChd = cast(did AS CHAR);
SET SESSION group_concat_max_len = 5000000;
WHILE sTempChd IS NOT NULL
DO
IF sTemp = '' THEN
SET sTemp = sTempChd;
ELSE
SET sTemp = concat(sTemp, ',', sTempChd);
END IF;
SELECT group_concat(depart_id)
INTO
sTempChd
FROM
yd_comp_depart_info
WHERE
find_in_set(parent_id, sTempChd) > 0;
END WHILE;
RETURN sTemp;
END
注:尽量设置group_concat_max_len 值,因为group_concat函数默认长度1024
相关文章推荐
- 根据某个部门ID递归获取其下面所有子部门和本部门信息
- PHP获取栏目的所有子级与孙级栏目的ID号
- 递归循环获取指定节点下面的所有子节点
- MySQL 获取子分类ID的所有父分类ID和Name的集合
- sql 递归函数,根据父级ID获取所有子级(含自己)
- (转)MySql 获取所有级联父级或所有级联子级
- 根据子级ID获取其所有父级
- 在Oracle中,快速获取一个部门以及它下面所有的子部门的方法。
- Mysql 根据id查所有父级或子级
- mysql获取某节点ID的所有子节点(包括他本身)
- PHP 获取栏目的【所有子级和孙级栏目】的ID号
- 钉钉获取所有部门ID方法
- mysql中使用递归实现父级部门所有子级信息的查询
- Mysql 根据id查所有父级或子级
- MySQL 获取某一个分类ID的所有父或子分类查询结果
- 无限极分类mysql存储过程编写实现调用时给定一个id,返回其所有父级与子级并排序
- mysql 根据子级id查询其所有的父级的
- PHP获取栏目的所有子级和孙级栏目的ID号示例
- mysql 创建函数(根据子类,依据父类id,循环查询出所有父类名)