获取满足条件的直接父级的 SQL 查询
Posted
技术标签:
【中文标题】获取满足条件的直接父级的 SQL 查询【英文标题】:SQL query to get immediate parent which satisfies a condition 【发布时间】:2014-03-03 05:19:22 【问题描述】:我有一个类别表,其中层次结构由 id、parentid 维护(即,一个类别的 ID 作为另一个类别的 parentid,然后它是该元素的子元素)。我想递归地从一个孩子上升到直接父母并检查其中一列是否说 FooterAdId 是否为空。如果 null 向上继续检查,否则返回 FooterAdId。我可以通过 cte 递归查询获得最高父级,但对如何将条件应用于上述场景感到困惑......
这里我手里有 id 6,如上所述我想要的结果将是 101。
【问题讨论】:
具有所需输出的示例输入!会有所帮助! 请不要让你的标题全部大写。 @vijaykumar-hadalgi 使用示例数据和所需输出更新问题。 【参考方案1】:使用您的 CTE 并在其中包含 ROW_NUMBER()
列 AS RowNum
。然后,根据您所做的 CTE
WITH MyCte AS
...
SELECT TOP 1 footeradid
FROM MyCte
WHERE footeradid IS NOT NULL
ORDER BY RowNum
【讨论】:
【参考方案2】:试试这个,
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
【讨论】:
以上是关于获取满足条件的直接父级的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
SQL语句中,查询一个结果,满足表1的A条件,满足表2的B条件,怎么写?