我试图在不借助技巧的情况下破坏现有数据库。我需要在链接表中查询,以递归查找所有匹配的ID。
我尝试了许多嵌套的联接查询,但是我不是SQL专家。我是一名程序员,当我使用简单的数据库时,像这样的复杂查询对我来说是一个难题。
我的桌子看起来像这样:
------------------------
| child_id | parent_ id|
________________________
2 16
3 16
4 16
11 10
12 11
16 7
17 10
18 17
19 7
20 19
21 10
22 21
23 22
24 22
26 20
我只知道顶级parent id
。我想找到所有关联的子ID。
如果parent ID
为7,我需要返回16,19,2,3,4,20,26。
答案 0 :(得分:1)
注意::该解决方案将在MariaDB 10.2.2及更高版本中运行。
with recursive cte(child_id, parent_id) as (
select child_id, parent_id from MyTable
where parent_id = 7
union all
select mt.child_id, mt.parent_id from MyTable mt
inner join cte t on mt.parent_id = t.child_id
)
select * from cte;