选择在表格中显示超过给定次数的行

时间:2014-12-14 21:34:11

标签: mysql sql

我在mysql数据库中有表,我需要选择thoose行,这些行的重复次数超过给定次数,但结果不应该合并(如果该行在表中是五次,我希望它出现五次结果中的次数)

表有三列: 身份证,姓名,姓氏

我尝试过这样的分组:

SELECT t.Name, t.Surname FROM table t
WHERE t.Id IN (
    SELECT tt.Id FROM table tt
    GROUP BY tt.Name, tt.Surname
    HAVING count(*) > 10
)

我知道我的错误在哪里 - 在这个子查询中,因为我理解它每个唯一的名称+姓氏只返回一个id,但我不知道如何正确地实现所需的行为。

1 个答案:

答案 0 :(得分:3)

解决此问题的一种方法是使用聚合查询加入原始表:

SELECT t.*
FROM   t
JOIN   (SELECT   name, surname, COUNT(*)
        FROM     t
        GROUP BY name, surname
        HAVING   COUNT(*) > 10) aggr ON t.name = aggr.name AND 
                                        t.surname = aggr.surname