实际业务中经常会使用到无限级分类,当我们需要根据一个指定分类推算出它下面的所有子级,包括子级的子级等,或者推算出所有父级,包括父级的父级等,我一般是通过后端代码来递归推算。其实也可以通过SQL语句来实现,免去写递归代码。不多废话,上SQL。

一、推算所有父级

with cte_parent(Id,Name,ParentId)
as
(
select Id,Name,ParentId    from DeviceTree    where Id= '{groupid}'
union all
select a.Id,a.Name,a.ParentId    from DeviceTree as a inner join cte_parent as b
on a.Id=b.ParentId where a.ParentId!='00000000-0000-0000-0000-000000000000' and a.isdelete=0
)
select Id,Name from cte_parent;

二、推算所有子级

with cte_child(Id,Name,ParentId)
as
(
select Id,Name,ParentId from DeviceTree where Id = '{groupid}'
union all
select a.Id,a.Name,a.ParentId from DeviceTree a
inner join  cte_child b on ( a.ParentId=b.Id) where a.isdelete=0
)
select Id,Name from cte_child;

以上代码未做性能测试,仅供参考。

实际业务中经常会使用到无限级分类,当我们需要根据一个指定分类推算出它下面的所有子级,包括子级的子级等,或者推算出所有父级,包括父级的父级等,我一般是通过后端代码来递归推算。其实也可以通过SQL语句来实现,免去写递归代码。不多废话,上SQL。一、推算所有父级with cte_parent(Id,Name,ParentId) ... (--下级 项 select materialshelf_id,materialshelf_pid,materialshelf_name from materialshelf where materialshelf_id = 5 -- 级id union all -- 归结果 CREATE TABLE [dbo].[yq_Project]( [ID] [int] IDENTITY(1,1) primary key, [cCode] [varchar](32) NOT NULL, [cPriorCode] [varchar](32) NULL,... @r AS _id, (SELECT @r := parent_id FROM folder WHERE id = _id) AS parent_id, @l := @l + 1 AS lvl 组织之间存在层级关系,人员可对应多个组织,对应的多个组织也可以存在上下级关系。 查询 某个人的组织的时候,需要把这个人对应的所有组织,和对应的每一个组织的所有上级都按序 查询 出来。 PersonListDto public class PersonListDTO { private Long id; private String personCode; private String name; private String position; department_id = '123456789' 是需要 查询 上级部门的表ID字段名称 name 和 value parent_id 是表内存储的department_id数据对应的 级ID WITH RECURSIVE cte AS( SELECT department x WHERE x.department_id = '123456789' UNION ALL ..
1、近期要做个功能,给一个树表自动添加上parent_ids,ORACLE有专门的 SQL ,可以 查询 并拼装所有 级的ID,MY SQL 不具备这个功能,经过多方查找资料并测试后,发现用函数挺好使,同时发现网上好多资料存在谬误,特把我测试无误的函数贴出来,供大家参考,同时如果有更好的方法,欢迎在评论区留言。 CREATE FUNCTION `FUNC_GET_PARENT_IDS`( TID VARCHAR ( 4000 )) RETURNS varchar(4000) CHARSET utf8 Warning: Function components cannot be given refs. Attempts to access this ref will fail. 20622 Warning: Function components cannot be given refs. Attempts to access this ref will fail. 请问你最终解决了嘛?怎么弄的? Warning: Function components cannot be given refs. Attempts to access this ref will fail. 你赢我输: 这样的话,dispatch就不能用了 百度地图API禁用点击景点弹出详细信息的方法 圆来是CLIF: 我有自己的点击事件,enableMapClick设置false之后我自己的事件也不能无法触发了吧。 IE浏览器new Date()的使用问题 丶不吃香菜灬: No media types found in ‘Microsoft.AspNet.OData.Formatter.ODataInputFormatter.SupportedMediaTypes‘. .netcore Ocelot网关引发的415 (Unsupported Media Type)错误 .netcore KestrelServerLimits对象属性注释