所以我有这张桌子:
+----+-----------+----------+
| 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个孩子等等...) (对表模式的修改也可以是一种解决方案)。
答案 0 :(得分:0)
对于您要实现的目标,您需要使用递归。
在这里查看示例:How to do the Recursive SELECT query in MySQL?
简而言之,您确定了最高父母,即没有父母的父母。然后,您将以递归方式查找所有子项及其子项的子项等。您可以在临时表中跟踪计数。然后,您可以查询临时表以查找具有最多子项的父项。
你只算父母的直系孩子吗?或者您是否需要所有孩子(包括嵌套孩子)?