INNER JOIN COUNT在同一张桌子上

时间:2016-06-14 06:53:38

标签: mysql sql join count

这是我目前正在努力实现的目标。 我有一个用户表,我想加入自己。 所以我查询没有ParentUserId的所有用户,并且还想要一个名为ChildrenCount的附加字段,在那里我可以找到ParentUserId = UserId的所有用户的数量。

SELECT p.*, COUNT(*) as ChildrenCount FROM users p
LEFT JOIN users q
on q.userid = p.ParentUserId
WHERE p.ParentUserId = 0 AND p.CategoryId = 2 ORDER BY p.userid DESC LIMIT 10 OFFSET 0

我没有收到任何错误,但查询无法正常工作。我没有得到所有相关孩子的统计数据。 数据库是MYSQL。

2 个答案:

答案 0 :(得分:3)

如果我理解正确的话, 您可以使用相关查询:

Comments

答案 1 :(得分:0)

我认为你不需要加入,因为你没有从子表中选择任何东西:

SELECT p.*, (SELECT COUNT(*) FROM `users` q WHERE q.userid = p.ParentUserId) as ChildrenCount
FROM `users` p
WHERE p.ParentUserId = 0 AND p.CategoryId = 2
ORDER BY p.userid DESC LIMIT 10 OFFSET 0