繁体   English   中英

SQL - 过滤掉某些类型的重复项

[英]SQL - filtering out certain types of duplicates

我正在使用大约30,000条记录的MySQL数据库,并尝试提出筛选出某些类型的重复记录的查询。

有两个相关的列 - emailflag 我需要获取所有没有重复email 对于具有重复email的记录,我仅在所有这些重复项时将其排除, flag设置为“否”。 如果对于其中一行, flag为“是”,那么我需要返回所有这些记录。

到目前为止,我有这个: http ://sqlfiddle.com/#!2 / ac20d / 6它目前返回行3,4,5,6,7,11,12。 我需要它返回3,4,5,6,7,8,9,11,12。

任何帮助将不胜感激!

谢谢!

我不明白你为什么不在结果中返回10。 它遵循你的规则,但它是一个空字符串。 所以,我想出了这个:

select * from mytable where email IN (
select 
email
from
mytable t
group by email
having count(email) = 1 or EXISTS (SELECT 1 FROM mytable st 
                                            WHERE t.email = st.email 
                                            AND st.flag = 'yes')
)
AND email != ''

这是你需要的吗?

sqlfiddle链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM