我有一个任务表,每个任务都有一个task_id
列和parent_id
列
我正在尝试构建一个返回每个task_id
的查询,这个id
在父id
列中显示的次数。
我试过这个问题:
SELECT
task_id, parent_id,
(SELECT COUNT( * )
FROM `tasks`
WHERE parent_id = task_id) AS count_parents
FROM tasks
此查询无效。我希望这个问题足够清楚。
答案 0 :(得分: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;
如果您只想要父母的任务,那么这很简单:
select parent_id,count(*)
from tasks
group by parent_id;
(后者可能需要where parent_id is not null
或类似,具体取决于您如何表示没有父母的任务。
答案 1 :(得分:1)
好像你想要这个:
SELECT task_id,
parent_id,
COUNT(parent_id) AS count_parents
FROM tasks
GROUP BY task_id, parent_id
答案 2 :(得分:1)
试试这个:
select task_id,parent_id, count(parent_id) as count_parents
from `tasks`
group by task_id,parent_id;
在这种情况下,你需要一个小组,希望它有所帮助。
答案 3 :(得分:0)
SELECT t2.task_id, t2.parent_id,
(SELECT COUNT( * ) FROM `tasks` t1
WHERE t1.parent_id = t2.task_id) AS count_parents
FROM tasks t2
我想你的问题