MySQL计算重复项

19

如何在select语句中计算重复行?

这是我的表:

name food
A Apple
B Banana
A Banana
C Apple

结果应该像这样:

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

我需要在结果集中加入第三列,其值为count(Name)

提前感谢

2个回答

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

如果你想统计所有的元素数量,而不仅仅是有重复的元组,则应该删除HAVING行,因为那会过滤掉没有重复项的任何内容。


38

你所要做的事情不是很清晰,下面提供两种可能性。

如果你想确定相同的名字食物组合出现了多少次,你可以使用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组返回一行,并附带在该组中出现的记录数。第二个查询语句将返回所有行,并计算每行中具有相同名称的行数。

我昨天浪费了很多时间手动计算数据,而有像这样的工具。非常感谢。 - newbie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接