SQL Server 递归查询,通过子id查询所有父级
1.表结构
在这里插入图片描述
2.SQL

--由子级递归父项
with cte(materialshelf_id,materialshelf_pid,materialshelf_name)
(--下级父项
select materialshelf_id,materialshelf_pid,materialshelf_name from materialshelf where materialshelf_id = 5 --子级id
union all
--递归结果集中的父项
select t.materialshelf_id,t.materialshelf_pid,t.materialshelf_name from materialshelf as t
inner join cte as c on t.materialshelf_id = c.materialshelf_pid
select materialshelf_id,materialshelf_pid,materialshelf_name from cte order by materialshelf_id asc

在这里插入图片描述
4.SQL Server多行数据合并一个

--由子级递归父项
with cte(materialshelf_id,materialshelf_pid,materialshelf_name)
(--下级父项
select materialshelf_id,materialshelf_pid,materialshelf_name from materialshelf where materialshelf_id = 5 --子级id
union all
--递归结果集中的父项
select t.materialshelf_id,t.materialshelf_pid,t.materialshelf_name from materialshelf as t
inner join cte as c on t.materialshelf_id = c.materialshelf_pid
select stuff((
select materialshelf_name + '/'
from cte order by materialshelf_id asc for xml path('')),1,0,'') as materialshelf_name; 

5.合并结果
在这里插入图片描述

insert into C values(1,'w',null) insert into C values(3,'d',null) insert into C values(5,'d',1) insert into C values(6,'f', 本篇文章小编给大家分享一下MySQL通过自定义函数实现递归查询父级ID或者ID代码实例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。背 景:在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度, 那么所有节点为根的树的深度均不会超过树的最大深度,则我们可以直接通过left join来实现。但很多时候我们是无法控制或者是知道树的深度的。这时就需要在... with tab as select pc.id,pc.ParentId,pcd.Name,1 as [level] from ProductCategories pc join Produ... 需求:已知某个id的值,需要查询这个id关联的所有父级数据,如查询到该id的父类数据之后,还需要查询父类数据的爷爷辈数据,依次类推,直到查询到顶级。 SELECT T2.* FROM ( SELECT @r AS _id, (SELECT @r := parent_id FROM folder WHERE id = _id) AS parent_id, @l := @l + 1 AS lvl 查询数据库表中字段及类型 SELECT table_catalog,table_schema,table_name,column_name,ordinal_position,is_nullable,data_type,character_maximum_length,numeric_precision,udt_name FROM information_schema.columns As ... CREATE DEFINER=`root`@`%` FUNCTION `getVehicleComponentParentName`(`nodeId` int) RETURNS varchar(400) CHARSET utf8 BEGIN DECLARE parentId INT; DECLARE parentName VARCHAR(400); 我们在设计表的时候可能会把父级关系放在一张表。 如:表o_Organization有字段PID,ID,[Description],Org_Type,OrgAll,AccountID 其中ID是主键。PID表示父级ID,同时这个父级ID又是Organization表的主键ID。 表是这样设计的,要怎么才能一条SQL查询一个父级ID下包含多少集呢? SQL Server With As 递归获取层级(父)关系数据 链接: https://blog.csdn.net/SunshineBlog/article/details/80940778. // An highlighted block --创建一个表 CREATE TABLE [dbo].[Factory]( [FId] [int] primary key IDENTITY(1,1) NOT NULL, 开门见山,首先说下遇到的问题:前期系统地区字典表中,每个省市县只存了本级名称,没存完整的字段。如:肥西县隶属安徽省合肥市,表中就存了一个肥西县。现有需求需要将完整字段显示,由于系统已在线上运营,无法做过多复杂修改,初步定的方案是在表中新追加一个字段,将字段补齐,一是方便修改,二是为了后期如果别的功能用到可以拿新字段使用,简化工作。 好了,问题已经明确,接下来就想想怎么解决问题了。也不... WFE_FlowRecord表中 WFE_FRCode为主键,WFE_PFRCode为父表的主键 现在想查询某个表的所有父表的数据,且父表的标志位为WFE_FRSubFlow = 'F'  查询语句如下: with cte AS select WFE_PFRCode,WFE_FRSubFlow,WFE_FRCode,0 as lvl from WFE