mysql 递归查找菜单节点的所有子节点

SELECT
    id
FROM
    (
        SELECT
            t1.id,

IF (
            find_in_set(parent_id, @pids) > 0,
 @pids := concat(@pids, ‘,‘, id),
 0
) AS ischild
FROM
    (
        SELECT
            id,
            parent_id
        FROM
            rde_menu t
        WHERE
            t. menu_status = 1
        ORDER BY
            parent_id,
            id
    ) t1,
    (SELECT @pids := 要查询的节点id) t2
) t3
WHERE
    ischild !=0

时间: 2024-11-10 15:39:30

mysql 递归查找菜单节点的所有子节点的相关文章

With As实现查找表中指定节点的所有子节点

要实现的树如图所示,要求能根据“节点1”获取其所有子节点 数据库表设计如下: 在这里用到With As WITH tb AS { SELECT* FROM node WHERE nodeId=1 UNION ALL SELECT node.nodeId,node.nodeName,node.parentId FROM node,tb WHERE node.parentId=tb.nodeId } SELECT * FROM tb

T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)

-- 查找所有父节点with tab as( select Type_Id,ParentId,Type_Name from Sys_ParamType_V2_0 where Type_Id=316--子节点 union all select b.Type_Id,b.ParentId,b.Type_Name  from  tab a,--子节点数据集  Sys_ParamType_V2_0 b  --父节点数据集 where a.ParentId=b.Type_Id  --子节点数据集.paren

[SQL]T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)

-- 查找所有父节点with tab as( select Type_Id,ParentId,Type_Name from Sys_ParamType_V2_0 where Type_Id=316--子节点 union all select b.Type_Id,b.ParentId,b.Type_Name  from  tab a,--子节点数据集  Sys_ParamType_V2_0 b  --父节点数据集 where a.ParentId=b.Type_Id  --子节点数据集.paren

SQL Server 查询树结构的表,查询一个节点的所有子节点

1 ;with cte as 2 ( 3 select * from Associator where No = 'mc1007' 4 union all 5 select air.* from Associator as air inner join cte on air.ParentNo = cte.No 6 ) 7 select * from cte;

SQL---查询树中某个节点及其所有子节点

with f as ( select * from tab where id=1 union all select a.* from tab as a inner join f as b on a.pid=b.id ) select * from f

SQL 递归找查所有子节点及所有父节

在SQL的树型结构中,很多时候,知道某一节点的值,需要查找该节点的所有子节点(包括多级)的功能,这时就需要用到如下的用户自定义函数. 表结构如下: ID int Dep_Type int Dep_Code varchar(50) Dep_Name varchar(50) Dep_Dian int Dep_FathID int Dep_Opera varchar(50) Dep_Status int Dep_AddTime datetime 用户自定义函数如下: create function f

最佳数据库无限分级快速查找所有子节点的方法

场景我们基本设计的表是这样的 temp表 id, name, parent_id 当我们查某个节点的所有子节点的时候,我们需要递归查询 id = 4 select * from temp where parent_id = 4 ids = [5,9,25] select * from temp where parent_id in [5,9,25] 那么这种方法在层数达到一定层的时候势必带来性能问题,因为需要多次查询数据库,就算写存储过程,性能也是十分低下的. 快速查询方法如下: 改造表,添加c

在一个树型结构数据中,查找相邻有相同属性的节点的最大数量的方法

本文介绍的是一个在一个树型数据结构中,查找 type 属性均为 a 的相邻节点的最长链路的节点数量,如果中间有任何其他节点插在其中,那这个长度就结束了,必须是相邻的.一个最简单的示例就是在一个树型结构中,有两个节点要进行连接,但是连接的节点如果都是 type 为 a 的话,则最长不能超过5个,超过五个则节点不能进行连接. 如下图: 在进行节点之间的连接时,如过相邻的节点 type 属性均为 a 的超过五个就不能连接.假设上图的节点都有 type 属性,且都为 a ,则在连接时 2.1 节点是可以

easyui Tree模拟级联勾选cascadeCheck,节点选择,父节点自动选中,节点取消,父节点自动取消选择,节点选择,所有子节点全部选择,节点取消,所有子节点全部取消勾选

最近项目中用到easyui tree,发现tree控件的cascadeCheck有些坑,不像miniui 的tree控件,级联勾选符合业务需求,所以就自己重新改写了onCheck事件,符合业务需求.网上百度了很多资料,都没有完全符合自己业务场景的,所以就自己动手写咯. 先说一下自己的业务需求: 1.选中节点,上级以及所有直系上级节点自动选中,所有下级子孙节点全部自动选中: 2.取消选择节点,如果兄弟节点都未选择,则上级以及所有直系上级节点自动取消选择,所有下级子孙节点全部取消选中. 这里说一下c