查询以查找所有有多个孩子的人

时间:2018-04-22 19:00:24

标签: mysql sql subquery

我需要找到所有有一个以上的孩子的人的名单。我正在使用一个具有人名,人员ID的表。该人的ID也可用作其mother_ID和father_ID。

ID  NAME    Father ID   Mother ID
1   Paul        
2   Debbie      
3   Jessie      
4   Pam         1          3
5   Sue         1          3
6   Trish       1          3 
7   Sarah       1          2
9   John        
10  johnny      9          4
11  Ben         9          4

在上面的例子中,我想找到有两个孩子的Paul,黛比和杰西。

2 个答案:

答案 0 :(得分:1)

试试这个:

select * from 
your_table a where
(select count(distinct father_id, mother_id)
from your_table b where b.father_id=a.id or b.mother_id=a.id)>1;

请参阅it run on SQL Fiddle

答案 1 :(得分:0)

您可以使用COUNT(DISTINCT col) > 1

SELECT *
FROM table
WHERE Id IN (
    SELECT Father_Id
    FROM table
    GROUP BY Father_Id
    HAVING COUNT(DISTINCT Mother_id) > 1
    UNION ALL
    SELECT Mother_Id
    FROM table
    GROUP BY Mother_Id
    HAVING COUNT(DISTINCT Father_Id) > 1
    );

<强> DBFiddle Demo