我有一个看起来像这样的类别表...
Id ParentId Name
1 0 a
2 1 a1
3 2 a2
如何检查a2是否有祖父母或子女?在sql中?
答案 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;