SQL查询以获取满足条件的直接父级。

3
我有一个类别表,其中层次结构是通过ID、ParentID维护的(即一个类别的ID作为另一个类别的ParentID,则它是该元素的子级)。我想要从子级递归地向上移动到直接父级,并检查其中的一列,例如FooterAdId是否为null。如果为null,则向上继续检查,否则返回FooterAdId。我能够通过cte递归查询获得顶级父级,但是不确定如何将条件应用于上述描述的情况......

enter image description here

在这里,我手头有id 6,并且我想要的结果如上所述将是101。


样例输入和所需输出会很有帮助! - vhadalgi
请不要将您的标题全部使用大写字母。 - Qantas 94 Heavy
1
@vijaykumar-hadalgi,请在问题中更新示例数据和所需输出。 - Sree
2个回答

0
使用你的CTE,在那里包括一个ROW_NUMBER()列,命名为RowNum。然后,基于这个CTE进行操作。
WITH MyCte AS
   ...
SELECT TOP 1 footeradid
FROM MyCte
WHERE footeradid IS NOT NULL 
ORDER BY RowNum

0

试试这个,

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接