能够计算MySQL表中重复的行ID
我试图统计MySQL表中所有重复的ID 下面是我在运行此查询后生成的表能够计算MySQL表中重复的行ID,mysql,group-by,count,Mysql,Group By,Count,我试图统计MySQL表中所有重复的ID 下面是我在运行此查询后生成的表 SELECT aid, uid, timestamp FROM login_activity where uid <> 0 order by uid aid | uid | timestamp ----------------------- 17 | 43 | 1507677429 63 | 73 | 1507677429 101 | 91
SELECT
aid, uid, timestamp
FROM
login_activity
where uid <> 0
order by uid
aid | uid | timestamp
-----------------------
17 | 43 | 1507677429
63 | 73 | 1507677429
101 | 91 | 1507677429
45 | 109 | 1507677429
1 | 423 | 1507677429
3 | 423 | 1507677429
23 | 431 | 1507677429
19 | 431 | 1507677429
8 | 431 | 1507677429
7 | 445 | 1507677429
6 | 445 | 1507677429
33 | 445 | 1507677429
9 | 445 | 1507677429
选择
aid,uid,时间戳
从
登录活动
其中uid 0
按uid订购
aid | uid |时间戳
-----------------------
17 | 43 | 1507677429
63 | 73 | 1507677429
101 | 91 | 1507677429
45 | 109 | 1507677429
1 | 423 | 1507677429
3 | 423 | 1507677429
23 | 431 | 1507677429
19 | 431 | 1507677429
8 | 431 | 1507677429
7 | 445 | 1507677429
6 | 445 | 1507677429
33 | 445 | 1507677429
9 | 445 | 1507677429
这里我想得到
3
,因为有三个实例重复使用uid。它们是423
、431
和445
。我们将丢弃43、73、91、109,因为它们不会重复。有几种方法可以做到这一点。我建议从两个聚合开始:
select count(*)
from (select uid
from login_activity
where uid <> 0
group by uid
having count(*) > 1
) la;
select count(distinct la.uid)
from login_activity la
where exists (select 1
from login_activity la2
where la2.uid = la.uid and la2.aid <> la.aid
);