返回重复值的数量的查询

时间:2014-04-17 21:08:37

标签: mysql

在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出现两次)。

有什么建议吗?

2 个答案:

答案 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)