Mysql 从同一个表中选择计数

Mysql 从同一个表中选择计数,mysql,Mysql,我有一个任务表,每个任务都有一个task\u id列和parent\u id列。 我试图构建一个查询,返回每个任务id,该id显示在父id列中的次数。 我尝试了以下查询: SELECT task_id, parent_id, (SELECT COUNT( * ) FROM `tasks` WHERE parent_id = task_id) AS count_parents FROM tasks 这个查询不起作用。我希望这个问题足够清楚 看

我有一个任务表,每个任务都有一个
task\u id
列和
parent\u id
列。
我试图构建一个查询,返回每个
任务id
,该
id
显示在父
id
列中的次数。
我尝试了以下查询:

SELECT
     task_id, parent_id, 
     (SELECT COUNT( * ) 
      FROM  `tasks` 
      WHERE parent_id = task_id) AS count_parents 
FROM tasks

这个查询不起作用。我希望这个问题足够清楚

看起来你想要这个:

SELECT task_id, 
  parent_id, 
  COUNT(parent_id) AS count_parents
FROM tasks
GROUP BY task_id, parent_id

看起来你想要这个:

SELECT task_id, 
  parent_id, 
  COUNT(parent_id) AS count_parents
FROM tasks
GROUP BY task_id, parent_id
我想从你的问题

从你的问题中我想试试这个:

select task_id,parent_id, count(parent_id) as count_parents 
from `tasks` 
group by task_id,parent_id;
在这种情况下,您需要一个群组,希望它能有所帮助。

尝试以下方法:

select task_id,parent_id, count(parent_id) as count_parents 
from `tasks` 
group by task_id,parent_id;

在这种情况下,您需要一个小组成员,希望能有所帮助。

如果您想包括所有任务,无论它们是否为家长

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;
如果您只希望任务是父任务,那么这很简单:

select parent_id,count(*)
from tasks
group by parent_id;

(后者可能需要一个
,其中parent_id不为null
或诸如此类,这取决于您如何表示没有父任务的任务)。

如果您希望包括所有任务,无论它们是否为父任务

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;
如果您只希望任务是父任务,那么这很简单:

select parent_id,count(*)
from tasks
group by parent_id;

(后者可能需要一个
,其中parent_id不为null
或诸如此类,这取决于您如何表示没有父任务的任务)。

您的错误消息是什么?我怀疑您需要添加GROUPBY子句,但不确定。您的错误消息是什么?我怀疑您需要添加GROUPBY子句,但我不确定。