求助:MySQL统计表中各topicID重复出现次数的SQL语句
统计每个topicID的重复出现次数
嘿,这事儿不难搞定,用MySQL的GROUP BY搭配聚合函数COUNT()就能完美实现你的需求。
直接能用的SQL脚本
SELECT topicID, COUNT(*) AS numberOfTime FROM your_table_name -- 记得把这里替换成你实际的数据表名称哦 GROUP BY topicID ORDER BY topicID;
给你拆解下逻辑:
COUNT(*):专门用来统计每个分组里的记录条数,也就是每个topicID重复出现的次数GROUP BY topicID:把表中所有记录按topicID分组,相同topicID的会被归到一组,这样才能单独统计每组的数量AS numberOfTime:给统计出来的次数列起一个和你期望结果一致的别名,方便查看ORDER BY topicID:这是可选的,加上它能让结果按topicID从小到大排序,看起来更规整
用你的测试数据跑出来的结果
刚好匹配你想要的格式(不过注意哦,你提供的测试数据里topicID=3只出现了2次,所以结果里是2不是3~):
| topicID | numberOfTime |
|---|---|
| 1 | 4 |
| 2 | 2 |
| 3 | 2 |
如果之后需要限定统计范围,比如只统计某一天的数据,再加个WHERE条件就行,比如:
SELECT topicID, COUNT(*) AS numberOfTime FROM your_table_name WHERE date = '2018-11-11' GROUP BY topicID ORDER BY topicID;
内容的提问来源于stack exchange,提问作者Michael Chuuuuuuuuuuuuuuuuuuuu




