相关文章推荐
大力的长颈鹿  ·  Use Application ...·  5 月前    · 
另类的滑板  ·  TypeScript 元组 | 菜鸟教程·  1 年前    · 
月球上的柑橘  ·  pnpm install ...·  1 年前    · 
细心的豆腐  ·  腾讯文档 - 知乎·  1 年前    · 

原贴: https://blog.csdn.net/m0_38015877/article/details/76690363

-- 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;


select * from cm_channel where FIND_IN_SET(id,getChildrenList('e3468f7776bf4cd184d3e05232ab162f'))

场景我们基本设计的表是这样的temp表 id , name, parent_ id 当我们查某个节点的所有子节点的时候,我们需要递归 查询 id = 4select * from temp where parent_ id = 4 id s = [5,9,25]select * from temp where parent_ id in [5,9,25]那么这种方法在层数达到一定层的时候势必带来性能问题,因为需要多次... 我一直在试图解决这个问题,但是我什么都没走,希望有人可以救我。我的问题是我正在使用邻接列表 数据 模型在 mysql 中生成我的层次结构 数据 。我可以将表(见下文)检索到多维数组中,并且每个项目都具有关联数组。我想要做的就是一旦得到这个数组,我想得到另一个数组,其所有节点(子,孙等)都位于 ID (包括 项)下。我只是无法锻炼如何在其中编写代码的PHP。在 MySQL 中,我的表如下所示: id name ...     SELECT          @r AS _ id ,          (SELECT @r := parent_ id FROM cm_channel WHERE id = _ id ) AS parent_ id , CREATE TABLE `ds_relation_folder` ( ` id ` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增 Id ', `parent_folder_ id ` int(11) NOT NULL COMMENT ' 类文件夹 Id ', `child_folder_ id ` int(11) DEFAULT NULL COMMENT '子文件夹 Id ', `create_time` timestamp NOT NULL DEF 在 MySQL 中,可以使用递归 查询 来获取一个部门下所有的 子级 部门包括 子级 子级 。 WITH RECURSIVE cte AS ( SELECT id , name, parent_ id FROM department WHERE parent_ id = ? UNION ALL SELECT d. id , d.name, d.parent_ id FROM department d mysql 如何获取其及其所有 子孙 数据 id (二) 上篇讲到了 mysql 8.0如何获取其及其所有 子孙 数据 id ,现在来讲5.7的。 吐槽一下,原来公司老大跟我说用的是 mysql 8.0 ,然后项目部署上线后才知道是5.7,高版本到低版本总有语法不兼容的东西,所以 WITH RECURSIVE cte 用不了了。 查询 了很多资料 mysql 8.0递归只能用存储函数了。 ##在创建存储函数前最好执行下这条代码,网上说开启了bin-log,不然可能会 现This function has none of D