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

标签 sql sql-server stored-procedures

我有一个类别表,其中层次结构由 id、parentid 维护(即,一个类别的 ID 作为另一个类别的 parentid,然后它是该元素的子元素)。我想递归地从一个 child 上升到直接 parent ,并检查其中一个列说 FooterAdId 是否为空。如果为 null 则向上继续检查,否则返回 FooterAdId。我能够通过 cte 递归查询获得顶级父级,但对我如何将条件应用于上述场景感到困惑......

enter image description here

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

最佳答案

使用您的 CTE 并在 AS RowNum 中包含一个 ROW_NUMBER() 列。然后,根据你做的CTE

WITH MyCte AS
   ...
SELECT TOP 1 footeradid
FROM MyCte
WHERE footeradid IS NOT NULL 
ORDER BY RowNum

关于SQL查询以获得满足条件的直接父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22139188/

相关文章:

sql - 删除和更新级联不会影响 SQLite 中的子表?

sql - 如何使用与 y 相似的数据创建表 x 并在 oracle 中声明更多新列

mysql - 查询与字段的一个或多个条件匹配的行

python - Peewee 等模块是否支持 MsSQL?

postgresql - 如何从函数本身内部获取调用函数的语句?

sql - Snowflake 或 Azure 数据工厂中的转换?

c# - 通过创建日期时间将 null 传递到 sql server 2012 日期时间的问题?我的存储过程的变量

sql - 计算列规范中的除法、求和值

sql-server - 具有动态列名的 SQL 存储过程

sql - 将数据库从 MS SQL 迁移到 MySql - 耗时/困难程度如何?