如何获得最多孩子的身份证

时间:2016-02-24 02:24:21

标签: mysql

所以我有这张桌子:

+----+-----------+----------+
| id | id_parent | id_child |
+----+-----------+----------+
|  1 |        10 |        9 |
|  2 |        11 |        9 |
|  3 |        12 |       11 |
|  4 |        13 |       11 |
|  5 |        14 |       13 |
+----+-----------+----------+

我想选择孩子最多的父母。 显然,如果9是11岁的孩子,11岁是13岁的孩子,那么9岁是13岁的孩子。 在这里,如果我使用:

SELECT id_parent,COUNT(id_child) AS count
from dependency
GROUP BY id_parent ORDER BY count DESC;

每个父母会给1分。 有没有办法在不向数据库添加更多记录的情况下执行此操作。 (这意味着不添加9个孩子等等...) (对表模式的修改也可以是一种解决方案)。

1 个答案:

答案 0 :(得分:0)

对于您要实现的目标,您需要使用递归。

在这里查看示例:How to do the Recursive SELECT query in MySQL?

简而言之,您确定了最高父母,即没有父母的父母。然后,您将以递归方式查找所有子项及其子项的子项等。您可以在临时表中跟踪计数。然后,您可以查询临时表以查找具有最多子项的父项。

你只算父母的直系孩子吗?或者您是否需要所有孩子(包括嵌套孩子)?