Mysql递归查询 - 获取所有父子关系

13 浏览
0 Comments

Mysql递归查询 - 获取所有父子关系

我有一个包含以下数据的表格。

id|child
1|2
1|3
1|4
2|6
2|7
3|9
6|10
6|11
9|12
9|13
10|14
10|15
17|18
19|20

我需要获取如下的数据。即指定id的所有父子关系。

在这里,我选择了id为“1”的所有子节点的递归查询。

id|all_child_id
1|2,3,4
2|6,7
3|9
6|10,11
9|12,13
10|14,15

我正在寻找不受深度约束的“WITH RECURSIVE”方法,但Mysql不支持。有人可以帮我写一个递归查询的方法吗?

0
0 Comments

MySQL递归查询 - 获取所有父子关系的原因是想要在MySQL中实现递归查询,获取所有父子关系。这可以通过使用一个单表来实现,而不是使用两个表。

为了解决这个问题,可以使用以下SQL查询语句来实现:

SELECT p.id, GROUP_CONCAT(c.child) AS all_child_id FROM parent p LEFT JOIN child c ON p.id=c.child GROUP BY p.id

这个查询语句使用了LEFT JOIN来连接parent和child表,并通过ON子句指定了连接条件。然后,使用GROUP BY子句按照parent表中的id进行分组。最后,使用GROUP_CONCAT函数来将child表中的child列的值连接成一个逗号分隔的字符串,并将其命名为all_child_id。

通过使用这个查询语句,可以获取到所有父子关系的结果。

0
0 Comments

Mysql递归查询 - 获取所有父子关系的问题

问题的出现原因:

在Mysql数据库中,有时候需要获取所有的父子关系数据,即获取每个父节点对应的所有子节点。然而,Mysql并没有提供直接获取父子关系的方法,因此需要通过其他方式来解决这个问题。

解决方法:

通过使用Mysql的group_concat函数,可以实现获取所有父子关系的需求。具体的解决方法如下所示:

select parent, group_concat(child)
from table
group by parent

以上代码通过group_concat函数将每个父节点对应的所有子节点的值拼接成一个字符串,并将结果按照父节点进行分组,从而实现了获取所有父子关系的需求。

通过在SQL Fiddle上执行以上代码,可以查看实际的结果。点击这里查看SQL Fiddle示例。

通过使用Mysql的group_concat函数可以实现获取所有父子关系的需求。以上解决方法可以帮助Mysql用户解决类似的问题。

0