同一张桌子上的INNER JOIN COUNT
这是我目前正在努力实现的。 我有一个用户表,我想加入自己。 因此,我查询没有ParentUserId的所有用户,并且还想要一个名为ChildrenCount的附加字段,我可以通过ParentUserId = UserId找到所有用户的计数。同一张桌子上的INNER JOIN COUNT
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。
如果我理解正确的你, 你可以使用相关查询:
SELECT p.*,
(SELECT count(*) FROM users s
WHERE s.parentUserId = p.userid) as ChildrenCount
FROM users p
WHERE p.ParentUserId = 0 AND p.CategoryId = 2
ORDER BY p.userid DESC LIMIT 10 OFFSET 0
你是不是处于'过度渴望'这个人的危险中 – Strawberry
当天的第一个答案,给我一个休息Zzz @Strawberry – sagi
我不能说是否有评论中的讽刺,但这看起来像是解决我的一个问题。如果您通过更新链接,更加抽象地讨论这个概念,以便我们可以了解何时考虑针对其他情境的类似解决方案,您可以进一步“过度扣紧”这些奖励点。 – Anthony
我觉得你不需要加入,因为你没有选择子表什么:
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
你有什么问题? –
“我有一个用户表,我想自己加入,所以我查询没有ParentUserId的所有用户,并且还想要一个名为ChildrenCount的额外字段,我可以通过ParentUserId = UserId找到所有用户的计数。 我的查询不起作用。 –
错误是什么? –