mysql计数重复

时间:2010-10-14 15:52:20

标签: mysql

如何通过选择语句计算重复行

这是我的表

name food  
A    Apple  
B    Banana  
A    Banana  
C    Apple  

结果应该是这样的:

name food count
A    apple (2)  
B    Banana (1)  
A    Bananaa (2)  
C    Apple (1)  

我需要在结果集中使用第三个coloumn,其值为count(Name)

提前致谢

2 个答案:

答案 0 :(得分:31)

目前还不清楚你想要做什么,所以这里有两种可能性。

如果您想确定发生相同namefood组合的次数,可以使用GROUP BY对相似记录进行分组,并使用COUNT确定有多少次在小组中:

SELECT name, food, COUNT(*) AS count
FROM your_table_name
GROUP BY name, food

或者,如果要检索只有名称重复的次数,则需要子查询:

SELECT name, food,
  (
    SELECT COUNT(*)
    FROM your_table_name
    WHERE name = table_alias.name
  ) AS count
FROM your_table_name AS table_alias

第一个查询每个name / food组只返回一行,以及该组中显示的记录数。第二个查询将返回所有行,并计算每行中具有相同名称的行数。

答案 1 :(得分:29)

SELECT name, food, COUNT(food) AS cnt
FROM table
GROUP BY name, food
HAVING (cnt > 1)

如果你想要计算所有东西,而不仅仅是带有重复的元组,那么就消除HAVING行,因为它会过滤掉任何没有重复的东西。