我需要找到所有有一个以上的孩子的人的名单。我正在使用一个具有人名,人员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,黛比和杰西。
答案 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;
答案 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 强>