1

自己参照テーブルがあり、最上位の親 (親 = 0) とそれぞれに属する子の数のみを返す mysql クエリが必要です。これは私がこれまでに持っているものですが、うまくいかないことはわかっています。

SELECT id, (SELECT COUNT(id) FROM example where parent_id = id) FROM example WHERE parent_id = 0;

+--------+-----------+
|   id   | parent_id |
+--------+-----------+
|    1   |     0     |
|    2   |     1     |
|    3   |     1     |
|    4   |     0     |
|    5   |     4     |
+--------+-----------+
4

4 に答える 4

2
SELECT parent_id parent, count( * ) num_children
FROM example
GROUP BY parent_id
HAVING parent_id
IN (

SELECT id
FROM `example`
WHERE parent_id =0
)
于 2011-05-03T13:32:55.937 に答える
0

Dave Morris と Tomgrohl から提供された回答のおかげで、動作させることができました。これが私が使用したMySQLです。

SELECT parent_id parent, count( * ) num_children
FROM example
GROUP BY parent_id
HAVING parent_id <> 0
IN (
    SELECT id
    FROM `example`
    WHERE parent_id = 0
);
于 2011-05-03T16:48:31.780 に答える
0

これと同じくらい簡単なものが機能するはずです:

SELECT parent_id, count( * ) cnt
FROM example
WHERE parent_id
IN (
   SELECT id
   FROM `example`
   WHERE parent_id =0
)
GROUP BY parent_id
于 2011-05-03T13:30:21.833 に答える
-1

列の前にテーブル エイリアスを付ける必要があります

SELECT id, (SELECT COUNT(inner.id) FROM example inner where inner.parent_id = outer.id) FROM example outer WHERE parent_id = 0;

于 2011-05-03T13:23:56.440 に答える