仅当重复电子邮件或电话时,Mysql 计数总数
Posted
技术标签:
【中文标题】仅当重复电子邮件或电话时,Mysql 计数总数【英文标题】:Mysql count total only if duplicates email OR phone 【发布时间】:2022-01-04 01:30:07 【问题描述】:如果电子邮件重复或电话重复,我正在尝试计算重复行总数。
这是我的桌子
email phone
john@a.com 2222222222
john@a.com 6666666666
Stev@a.com 5656565656
Mike@a.com 2222222222
输出应该总行有重复值电话或电子邮件
重复以上,计数为3
【问题讨论】:
这是一个迭代任务。它需要在递归 CTE 或迭代存储过程中。 如果添加一行Mike@a.com 333333333
,那么输出将为4?如果有 2 个非链接集群,每个集群有 3 行和 4 行,那么输出必须是什么?
@Akina 如果任何列有多个值,则将该行添加到计数中
【参考方案1】:
只需在表中找到所有重复的电子邮件和所有重复的电话号码,如果其中包含任何一个值,则计算该行;
SELECT COUNT(*)
FROM Table1
WHERE email IN (SELECT email FROM Table1 GROUP BY email HAVING COUNT(*)>1)
OR phone IN (SELECT phone FROM Table1 GROUP BY phone HAVING COUNT(*)>1)
An SQLfiddle to test with.
【讨论】:
数据库很大,使用子查询会很慢 @Romil 你的桌子上有索引吗?现在查询需要多长时间?以上是关于仅当重复电子邮件或电话时,Mysql 计数总数的主要内容,如果未能解决你的问题,请参考以下文章