MySQL实现递归调用,查询组织架构树
2015-07-02 12:00
573 查看
表结构如下:
CREATE TABLE `t_department` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) DEFAULT NULL,
`name` varchar(45) DEFAULT NULL,
`defrole_id` int(11) DEFAULT NULL,
`company_id` int(11) DEFAULT NULL,
`remark` varchar(100) DEFAULT NULL,
`createtime` datetime DEFAULT NULL,
`modifytime` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
)
现在需要实现选出某个部门下面的所有子部门,在Oracle当中可以通过递归调用connect prior来做,但是
Mysql没有递归查询,我选择自己做一个Function来解决。
DELIMITER //
CREATE FUNCTION `getChildLst`(rootId INT)
RETURNS varchar(1000)
BEGIN
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd VARCHAR(1000);
SET sTemp = '$';
SET sTempChd =cast(rootId as CHAR);
WHILE sTempChd is not null DO
SET sTemp = concat(sTemp,',',sTempChd);
SELECT group_concat(id) INTO sTempChd FROM t_department where FIND_IN_SET(parent_id,sTempChd)>0;
END WHILE;
RETURN sTemp;
END//
DELIMITER ;
然后通过下面的SQL语句就可以选出对应部门的所有子部门。
select * from t_department
where FIND_IN_SET(id, getChildLst(1));
CREATE TABLE `t_department` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) DEFAULT NULL,
`name` varchar(45) DEFAULT NULL,
`defrole_id` int(11) DEFAULT NULL,
`company_id` int(11) DEFAULT NULL,
`remark` varchar(100) DEFAULT NULL,
`createtime` datetime DEFAULT NULL,
`modifytime` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
)
现在需要实现选出某个部门下面的所有子部门,在Oracle当中可以通过递归调用connect prior来做,但是
Mysql没有递归查询,我选择自己做一个Function来解决。
DELIMITER //
CREATE FUNCTION `getChildLst`(rootId INT)
RETURNS varchar(1000)
BEGIN
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd VARCHAR(1000);
SET sTemp = '$';
SET sTempChd =cast(rootId as CHAR);
WHILE sTempChd is not null DO
SET sTemp = concat(sTemp,',',sTempChd);
SELECT group_concat(id) INTO sTempChd FROM t_department where FIND_IN_SET(parent_id,sTempChd)>0;
END WHILE;
RETURN sTemp;
END//
DELIMITER ;
然后通过下面的SQL语句就可以选出对应部门的所有子部门。
select * from t_department
where FIND_IN_SET(id, getChildLst(1));
相关文章推荐
- MySQL实现递归调用,查询组织架构树
- MySQL实现递归调用,查询组织架构树
- MySQL实现递归调用,查询组织架构树
- MySQL实现递归调用,查询组织架构树
- MySQL实现递归调用,查询组织架构树
- MySQL实现递归调用,查询组织架构树
- MySQL实现递归调用,查询组织架构树
- MySQL实现递归调用,查询组织架构树
- MySQL实现递归调用,查询组织架构树
- MySQL实现递归调用,查询组织架构树
- MySQL实现递归调用,查询组织架构树
- PLSQL developer 连接不上64位Oracle 的解决方法
- oracle 监控执行的sql语句
- PLSQL DEVELOPER没有工具栏了,设置处理
- mysql运维之---每日一得01
- 编译OpenSIPS使用连接源码安装的MySQL
- mysql备份出错 mysqldump: Got error: 2002..
- SQL_OPEN XML
- 从此SQLPLUS有了Top命令
- pl/sql Developer 9注册码