【问题标题】:Query to find all people who have had a child with more than one person查询所有与多人有过孩子的人
【发布时间】:2018-04-22 19:00:23
【问题描述】:

我需要找到所有与多个人有过孩子的人的列表。我正在使用一张包含人名、人员 ID 的表。此人的 ID 也用作他们的 mother_ID 和父亲 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,他有两个不同的人,Debbie 和 Jessie。

【问题讨论】:

    标签: mysql sql subquery


    【解决方案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

    【讨论】:

    • COUNT(DISTINCT col1, col2) 的好用法 :) 我会交换或与Demo
    【解决方案2】:

    你可以使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 2013-03-03
      相关资源
      最近更新 更多