我试图获得重复计数,但实际上没有删除重复项。
我尝试使用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;
答案 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