mysql sql 根据父级id查询书所有的子孙级数据,或根据子级id查询对应的父级
2017-08-04 17:01
1001 查看
-- mysql递归查询,mysql中从子类ID查询所有父类(做无限分类经常用到)
SELECT T2.id, T2.channel_path
FROM (
SELECT
@r AS _id,
(SELECT @r := parent_id FROM cm_channel WHERE id = _id) AS parent_id,
@l := @l + 1 AS lvl
FROM
(SELECT @r := '2069ac487e2e49ddbdab78cba1e03828', @l := 0) vars,
cm_channel h
WHERE @r <> 0) T1
JOIN cm_channel T2
ON T1._id = T2.id
ORDER BY T1.lvl DESC;
-- mysql递归查询,mysql中从父类ID查询所有子类(做无限分类经常用到)
DROP FUNCTION IF EXISTS `getChildrenList`;
CREATE FUNCTION `getChildrenList`(rootId VARCHAR(1000))
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 cm_channel where FIND_IN_SET(parent_id,sTempChd)>0;
END WHILE;
RETURN sTemp;
END
select * from cm_channel where FIND_IN_SET(id,getChildrenList('e3468f7776bf4cd184d3e05232ab162f'))
SELECT T2.id, T2.channel_path
FROM (
SELECT
@r AS _id,
(SELECT @r := parent_id FROM cm_channel WHERE id = _id) AS parent_id,
@l := @l + 1 AS lvl
FROM
(SELECT @r := '2069ac487e2e49ddbdab78cba1e03828', @l := 0) vars,
cm_channel h
WHERE @r <> 0) T1
JOIN cm_channel T2
ON T1._id = T2.id
ORDER BY T1.lvl DESC;
-- mysql递归查询,mysql中从父类ID查询所有子类(做无限分类经常用到)
DROP FUNCTION IF EXISTS `getChildrenList`;
CREATE FUNCTION `getChildrenList`(rootId VARCHAR(1000))
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 cm_channel where FIND_IN_SET(parent_id,sTempChd)>0;
END WHILE;
RETURN sTemp;
END
select * from cm_channel where FIND_IN_SET(id,getChildrenList('e3468f7776bf4cd184d3e05232ab162f'))
相关文章推荐
- mysql 根据子级id查询其所有的父级的
- 根据id查询出所有的父级和子级
- Mysql 根据id查所有父级或子级
- linq根据传入数据集合查询对应子级数据
- Mysql 根据id查所有父级或子级
- B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序
- sql 递归函数,根据父级ID获取所有子级(含自己)
- Hibernate跨级修改子级数据,Hibernate根据父级ID跨级修改子级数据
- 根据子级ID获取其所有父级
- 根据一级分类查询所有子级分类
- SQL递归函数列出父级的所有子级(ID ParentID模式)
- MSSQL 下递归CTE的应用通过父级获取所有对应的子级节点(一)
- 根据父级编号获取无限树结构数据表中所有子节点的数据
- mysql中使用递归实现父级部门所有子级信息的查询
- ibatis学习之--3、根据id查询对应的用户信息
- MSSQL 递归CTE的应用通过子级获取所有对应的父级及其本身(二)
- python操作mongodb根据_id查询数据的实现方法
- 根据id查询数据(向前台返回json格式的数据)
- sqlserver 根据一个泛型id查询数据,批量删除数据
- 常用查询(二):查询库中所有表的数据(根据主键排序)