过滤最小记录数(COUNT)匹配条件

时间:2014-01-23 11:10:03

标签: mysql

我想根据特定人的最小记录数(N)从单个表中选择记录。例如,如果N = 2,那么

Name  Time
John  09:00:00
Sam   09:05:00
Sally 09:06:00
John  09:10:00
Jane  09:15:00
Joe   09:16:00
Sally 09:22:00

过滤到

Name  Time
John  09:00:00
Sally 09:06:00
John  09:10:00
Sally 09:22:00

记录计数很容易,但如何选择呢?

3 个答案:

答案 0 :(得分:0)

按功能分组使用。

select count(*),Name  from table_name group by Name  

答案 1 :(得分:0)

试试这个:

select * 
from mytable 
where name in (
    select name 
    from mytable 
    group by name 
    having count(1) =2
)

答案 2 :(得分:0)

您首先会按特定人员出现的次数对记录进行分组:

select count(1), name
from   Person
group  by name;

接下来,您要选择出现两次或更多次的人:

select name, time
from   Person
where  id in (
       select id from Person group by name having count(1) >= 2
)

请注意,我假设您的Person表格中有id列,该列唯一标识每一列。

因此,基本上,您首先选择出现两次或更多次的人的id,然后为这些人选择所需的数据。