mysql – 单表上的子查询

好的,我有一张桌子

Tasks
--
TaskId  (unique autoinc primary)
ChildOf   (Contains task ID of parent, or 0 if top tier (no parent))

我需要编写一个查询,选择ChildOf = 0的所有记录……简单吧?

好的但是还需要返回另一个列,结果告诉每个任务有多少个孩子……

所以结果看起来像这样……

TaskID ...  ChildOf ... countChildren
 37   ......  0   ....    3
 42   ......  0   ....    0
 99   ......  0   ....    1 

etc.... 

我知道我需要的两个查询是这样的,但需要以某种方式将它们组合起来……

Select TaskId as ParentTaskId, ChildOf from Tasks where ChildOf = 0

Select count(TaskId) from Tasks where ChildOf = ParentTaskId

注意:只有2层..父母和孩子……没有孙子!所以希望这会让它变得有点复杂.

任何帮助是极大的赞赏.感谢目前为止所有的帮助!

最佳答案 这样的事情应该这样做:

SELECT TaskId as ParentTaskId, ChildOf , 
 (SELECT count(t2.TaskId) 
  FROM Tasks t2
  WHERE t2.ChildOf = t.TaskId) as CountChildren
FROM Tasks t 
WHERE t.ChildOf = 0
点赞