SQL中如何筛选存在于不同地点的重复邮箱记录
解决方法:筛选存在于不同地点的邮箱
嘿,我懂你的问题啦——你需要找出那些在多个不同地点出现过的邮箱,而不是同一地点里重复出现的邮箱。你之前写的查询会把同一地点的重复记录也算进计数里,所以才会不符合预期。
问题出在哪?
你原来的查询:
select email, count(email) from table group by email having count(email) > 1
这里的count(email)统计的是该邮箱在表中出现的总次数,比如dos@dos.com在place_id=3出现了两次,总次数是2,但它只在一个地点出现,所以不是你要的结果。
正确的查询语句
我们需要统计的是每个邮箱关联的不同地点数量,这时候要用到COUNT(DISTINCT place_id):
SELECT email FROM your_table_name -- 记得替换成你的实际表名 GROUP BY email HAVING COUNT(DISTINCT place_id) > 1;
这个语句会先按邮箱分组,然后只保留那些关联了2个及以上不同地点的邮箱。
用你的示例数据验证
针对你的示例数据:
uno@uno.com关联的place_id有3、5、6,不同地点数量是3,满足条件,会被筛选出来dos@dos.com只关联place_id=3,不同地点数量是1,不会被选中tres@tres.com只关联place_id=4,不同地点数量是1,也不会被选中
完全符合你想要的结果~
内容的提问来源于stack exchange,提问作者Crt
相关产品推荐
相关产品推荐

