如何检查类别是否有祖父母或类别是否有孙子女?

时间:2020-06-28 13:44:28

标签: sql sql-server

我有一个看起来像这样的类别表...

Id ParentId Name
1  0        a
2  1        a1
3  2        a2

如何检查a2是否有祖父母或子女?在sql中?

2 个答案:

答案 0 :(得分:0)

要查找a2的祖父母行,您可以执行以下操作:

select c.*
from t a
join t b on b.id = a.parentid
join t c on c.id = b.parentid
where a.name = 'a2'

要查找a2的孙子行,可以执行以下操作:

select c.*
from t a
join t b on b.parentid = a.id
join t c on c.parentid = b.id
where a.name = 'a2'

答案 1 :(得分:0)

您可以使用递归 cte方法检查祖父母或子女:

with r_cte as (
     select t.id, t.parentid, t.name
     from table t
     where t.name = 'a2'
     union all
     select tm.id, tm.parentid, tm.name
     from table tm inner join
          r_cte r
          on r.parentid = tm.id
)
select rc.*
from r_cte rc;