仅当重复电子邮件或电话时,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 计数总数的主要内容,如果未能解决你的问题,请参考以下文章

我的注册码允许同一电子邮件注册两次(仅当表格连续多次提交时非常快)[重复]

MySQL:仅当不在另一张表中时才从一张表中选择电子邮件?

单击TextView中的电话号码或电子邮件地址时出错

用于显示电子邮件列中域名总数的 SQL

统计ios app中的分享总数

MYSQL - 仅当 LEFT JOIN 中的行不存在时才选择