mysql 父类子类查询
2016-07-20 11:19
411 查看
查出子
DELIMITER $$
DROP FUNCTION IF EXISTS `getDeptChildList`$$
CREATE FUNCTION `getDeptChildList`(rootId INT) RETURNS varchar(1000) CHARSET utf8
READS SQL DATA
DETERMINISTIC
BEGIN
DECLARE pTemp VARCHAR(1000);
DECLARE cTemp VARCHAR(1000);
SET pTemp = '$';
SET cTemp =cast(rootId as CHAR);
WHILE cTemp is not null DO
SET pTemp = concat(pTemp,',',cTemp);
SELECT group_concat(id) INTO cTemp FROM roll_work_comment
WHERE FIND_IN_SET(mes_id,cTemp)>0;
END WHILE;
RETURN pTemp;
END;
$$
DELIMITER ;
SELECT * FROM roll_work_comment WHERE FIND_IN_SET(id,getDeptChildList(1)) ORDER BY id and mes_id;
查出父
SELECT T2.*
FROM (
SELECT
@r AS _id,
(SELECT @r := mes_id FROM roll_work_comment WHERE id = _id) AS mes_id,
@l := @l + 1 AS lvl
FROM
(SELECT @r := 3, @l := 0) vars,
roll_work_comment h
WHERE @r <> 0) T1
JOIN roll_work_comment T2
ON T1._id = T2.id
ORDER BY T1.lvl DESC
DELIMITER $$
DROP FUNCTION IF EXISTS `getDeptChildList`$$
CREATE FUNCTION `getDeptChildList`(rootId INT) RETURNS varchar(1000) CHARSET utf8
READS SQL DATA
DETERMINISTIC
BEGIN
DECLARE pTemp VARCHAR(1000);
DECLARE cTemp VARCHAR(1000);
SET pTemp = '$';
SET cTemp =cast(rootId as CHAR);
WHILE cTemp is not null DO
SET pTemp = concat(pTemp,',',cTemp);
SELECT group_concat(id) INTO cTemp FROM roll_work_comment
WHERE FIND_IN_SET(mes_id,cTemp)>0;
END WHILE;
RETURN pTemp;
END;
$$
DELIMITER ;
SELECT * FROM roll_work_comment WHERE FIND_IN_SET(id,getDeptChildList(1)) ORDER BY id and mes_id;
查出父
SELECT T2.*
FROM (
SELECT
@r AS _id,
(SELECT @r := mes_id FROM roll_work_comment WHERE id = _id) AS mes_id,
@l := @l + 1 AS lvl
FROM
(SELECT @r := 3, @l := 0) vars,
roll_work_comment h
WHERE @r <> 0) T1
JOIN roll_work_comment T2
ON T1._id = T2.id
ORDER BY T1.lvl DESC
相关文章推荐
- mysql存储引擎概述
- 导mysql数据,遇到 longtext 类型,navicat导出会出现乱码
- Mysql用户管理及权限设置
- Mysql:四种常用的MySQL建表语句
- mysql 里面的isnull()和ifnull() is null 和 is not null
- message from server: "Host 'XXX' is not allowed to connect to this MySQL server
- MySQL权限体系
- ubuntu16下安装MySQLdb
- mysql。127.0.0.1和localhost的区别
- 命令行连接到MYSQL数据库服务器
- 50多条mysql数据库优化建议
- python连接mysql并进行操作代码
- 一张图入门MySQL
- mysql workbench 错误 No database selected Select the default DB to be used by double-clicking its nam
- mysql 如何用一条SQL将一张表里的数据插入到另一张表 3个例子
- MySQL索引之前缀索引和索引选择性
- MYSQL中replace into的用法
- 终端查看mysql数据库信息,
- MySQL开发规范
- mysql支持跨表delete删除多表记录