如何使用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。
感谢您的建议。
答案 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