获取重复计数而不删除

时间:2014-11-22 14:02:36

标签: mysql sql group-by

我试图获得重复计数,但实际上没有删除重复项。 我尝试使用GROUP BY id然后使用COUNT(id),但它会删除所有重复的条目。 有没有办法不删除重复项?

表格如下:

ID1   ID2    Value
1     2      someval
1     3      someval
1     4      someval
2     3      someval
2     1      someval
3     1      someval
4     1      someval

我想要得到这个:

ID1   ID2    Value    COUNT
1     2      someval  3
1     3      someval  3
1     4      someval  3
2     3      someval  2
2     1      someval  2
3     1      someval  1
4     1      someval  1

我用过这个:

SELECT ID1, ID2, Value, COUNT(ID1) FROM table GROUP BY ID1;

4 个答案:

答案 0 :(得分:4)

执行此操作的方法之一是对计数进行单独查询并对其进行连接:

SELECT t.id1, t.id2, t.value, cnt
FROM   my_table t
JOIN   (SELECT   id1, count(*) AS cnt
        FROM     my_table
        GROUP BY id1) c ON t.id1 = c.id1

答案 1 :(得分:1)

您可以使用MySQL中的相关子查询执行此操作;

select id1, id2, value,
       (select count(*) from table t2 where t2.id1 = t.id1) as count
from table t;

答案 2 :(得分:1)

如果性能是一个问题,那么不相关的子查询可能比相关的子查询快几个数量级......

SELECT x.* 
     , cnt 
  FROM my_table x 
  JOIN 
     ( SELECT id1,COUNT(*) cnt FROM my_table GROUP BY id1) y 
    ON y.id1 = x.id1; 

答案 3 :(得分:0)

尝试这样的事情:

SELECT YourColumn, COUNT(*) TotalCount
FROM YourTable
GROUP BY YourColumn
HAVING COUNT(*) > 1
ORDER BY COUNT(*) DESC