在mysql中,我需要一个返回字段中重复值的数量的查询" Info"我的桌子" Log"。
表日志:
ID_Log User Info
1 1 3
2 1 3
3 1 3
4 1 5
5 1 6
6 1 6
7 1 7
8 1 8
9 1 8
查询应返回" 4" (信息3出现三次,信息6出现两次,信息8出现两次)。
有什么建议吗?
答案 0 :(得分:1)
您可以使用简单的减法来获取已经出现的值的数量。从总行数中减去不同值的数量:
select count(*) - count(distinct info)
from log;
区别在于"重复"。
答案 1 :(得分:1)
这应该有效。将信息的值组合在一起,只保留出现次数减去1的结果大于0.然后对出现次数求和。
select sum(repeats)
from (SELECT Info, count(*) - 1 AS repeats
FROM Log
GROUP BY Info
HAVING repeats > 0)