【问题标题】:Selecting duplicates选择重复项
【发布时间】:2012-04-11 08:24:57
【问题描述】:

我有一张如下所示的表格:

编号|国家 | ==================== 1 |阿格利亚 | 2 |美国 | 3 |中国 | 4 |意大利 | 4 |意大利 | 6 |美国 | 7 |美国 | 1 |阿格利亚 |

我想要一个选择重复国家/地区的查询,但前提是 ID 不同。因此,从上表中,查询将产生如下内容:

编号|国家 | =================== 2 |美国 | 6 |美国 | 7 |美国 |

Italy 和 Argelia 也是重复的国家,但由于它们共享一个 id,它们不应该出现在输出中。我能做什么?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:
    SELECT c.id, 
           c.country 
    FROM   countries c 
           INNER JOIN (SELECT country, 
                              COUNT(DISTINCT id) k 
                       FROM   countries 
                       GROUP  BY country 
                       HAVING k > 1) t 
             ON c.country = t.country 
    

    see it working

    【讨论】:

    • 他们想要 ID 不匹配的输出,我认为这必须是子选择。
    • 谢谢,但不起作用...它只考虑计数,而不关心值是否相等或不同,因此它也返回 Argelia 和 Italy。
    • @Matthew doh 我在想什么解决了它
    【解决方案2】:
    SELECT country, COUNT(DISTINCT id) AS cnt, GROUP_CONCAT(id)
    FROM yourtable
    GROUP BY country, id
    HAVING cnt > 1
    

    【讨论】:

    • 谢谢,但不起作用...它只考虑计数,而不关心值是否相等或不同,因此它也返回 Argelia 和 Italy。
    • 哎呀。试试COUNT(DISTINCT id) 然后
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 2017-09-10
    相关资源
    最近更新 更多