使用sql,如何获取重复计数的行?

时间:2012-02-03 17:02:02

标签: mysql sql

如何使用select语句计算重复行(日期和名称相同)?

这是我的表

id  date        name
1   01/02/12    sam  
2   01/02/12    john  
3   02/04/12    eddie  
4   01/06/12    joe 
5   01/02/12    john  
6   01/02/12    john
7   02/04/12    eddie
8   01/05/12    eddie
9   01/07/12    joe 

结果应该是这样的:

id  date        name   count
1   01/02/12    sam    1
    01/02/12    john   3
    02/04/12    eddie  2
4   01/06/12    joe    1
8   01/05/12    eddie  1
9   01/07/12    joe    1

我需要在结果集中使用第三个coloumn,其值为count列。如果计数超过1,我也不需要id(我认为无论如何都不可能)。我正在使用mysql。

感谢您的建议。

3 个答案:

答案 0 :(得分:5)

你可以写:

SELECT MIN(id) AS id, date, name, COUNT(1) AS `count`
  FROM table_name
 WHERE ...
 GROUP BY date, name
;

这将始终给予该组最少id个。如果您在重复时明确想要第一个字段NULL,那么您可以将MIN(id)更改为CASE WHEN COUNT(1) > 1 THEN NULL ELSE MIN(id) END,但听起来您不是关心那个?

答案 1 :(得分:0)

类似的东西:

select  id, date, name, count(*)
from mytable
group by id, date, name
having count(*) > 1

答案 2 :(得分:0)

select date, name, count(id) as counter
from mytable
group by date, name
having count(id) > 1