从同一个表中选择计数

Tar*_*rek 1 mysql

我有一个任务表,每个任务都有一task_id列和一parent_id列.
我正在尝试构建一个返回每个查询的查询,这个查询在父列中显示task_id的次数. 我试过这个查询: idid

SELECT
     task_id, parent_id, 
     (SELECT COUNT( * ) 
      FROM  `tasks` 
      WHERE parent_id = task_id) AS count_parents 
FROM tasks
Run Code Online (Sandbox Code Playgroud)

此查询无效.我希望这个问题足够清楚.

yst*_*sth 5

如果你想要包括所有任务,无论他们是否曾经是父母,

select tasks.task_id,count(parent.parent_id)
from tasks
left join tasks parent on tasks.task_id=parent.parent_id
group by tasks.task_id;
Run Code Online (Sandbox Code Playgroud)

如果你只想要父母的任务,这是微不足道的:

select parent_id,count(*)
from tasks
group by parent_id;
Run Code Online (Sandbox Code Playgroud)

(后者可能需要一个where parent_id is not null或那样,取决于你如何表示没有父母的任务).