我有一个分类表,其中层次结构由id,parentid(即一个类别的ID作为另一个类别的parentid,然后它是该元素的子项)维护。我想递归地从一个孩子到直接父母,并检查列中的一个说FooterAdId为空或不。如果null向上并继续检查,则返回FooterAdId。我可以用一个CTE递归查询来获取顶级父,但我感到困惑如何适用条件上面描述的场景...SQL查询以获得满足条件的直接父项
这里我有ID 6在我的手,结果我想要如上所述将是101.
我有一个分类表,其中层次结构由id,parentid(即一个类别的ID作为另一个类别的parentid,然后它是该元素的子项)维护。我想递归地从一个孩子到直接父母,并检查列中的一个说FooterAdId为空或不。如果null向上并继续检查,则返回FooterAdId。我可以用一个CTE递归查询来获取顶级父,但我感到困惑如何适用条件上面描述的场景...SQL查询以获得满足条件的直接父项
这里我有ID 6在我的手,结果我想要如上所述将是101.
使用您的CTE和包括一个ROW_NUMBER()
列AS RowNum
。然后,基于CTE的你
WITH MyCte AS
...
SELECT TOP 1 footeradid
FROM MyCte
WHERE footeradid IS NOT NULL
ORDER BY RowNum
试试这个,
Declare @t table (id int,parentid int,footerid int)
insert into @t values(1,null,null),(2,null,100),(3,1,101),(4,3,null),(5,4,null),(6,5,null)
;with CTE as
(
select * from @t where id=6
union all
select a.* from @t a inner join cte b on a.id=b.parentid and b.footerid is null
)
select * from cte
样品输入与输出的需要!有助于 ! –
请不要让您的标题全部大写。 –
@ vijaykumar-hadalgi用示例数据和所需输出更新问题。 – Sree