[英]SQL - filtering out certain types of duplicates
我正在使用大约30,000条记录的MySQL数据库,并尝试提出筛选出某些类型的重复记录的查询。
有两个相关的列 - email
和flag
。 我需要获取所有没有重复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 != ''
这是你需要的吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.