我在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,但我不知道如何正确地实现所需的行为。
答案 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