SQL - 如何根据父项的子项数获取父项中的所有行?

时间:2017-07-05 07:37:32

标签: sql postgresql select

我有两张桌子:

  • 父表:id,name
  • 子表:id,name,id_parent

现在,我想列出父表中的行,其子行数为3。

2 个答案:

答案 0 :(得分:1)

可以通过多种方式完成。最简单的可能是WHERE子句中的相关子查询来计算子项数:

select *
from parents p
where (select count(*) from children c
       where c.id_parent = p.id) = 3

GROUP BYHAVING

select p.*
from parents p
join children c
     on c.id_parent = p.id
group by p.id
having count(*) = 3

答案 1 :(得分:0)

我像这样编辑我的查询。

select p.*, count(c.id)
from parents p
join children c
     on c.id_parent = p.id
group by p.id
having count(*) = 3

没关系? jarlh