我有一个数据库表,存储电子邮件地址数据,加入日期和专栏通讯(是/否)。然而,有许多重复的电子邮件地址与不同的日期和价值在通讯专栏。我需要编写sql查询,该查询将排除那些日期较晚的电子邮件(记录),并且只保留带有最老日期的记录:
EMAIL DATEJOIN NEWSLETTER
zzzzzzzzzz_@hotmail.com 02/03/2015 0
zzzzzzzzzz_@hotmail.com 30/06/2015 1
vishythamack@hotmail.com 22/09/2012 1
vishysblue@gmail.com 19/09/2012 1
yann-o@hotmail.fr 07/07/2015 0
yannnsheng@hotmail.com 02/03/2015 0
yannnsheng@hotmail.com 22/09/2012 1
thilaxanschool@gmail.com 18/09/2013 1
What I need After Query
EMAIL DATEJOIN NEWSLETTER
zzzzzzzzzz_@hotmail.com 02/03/2015 0
vishythamack@hotmail.com 22/09/2012 1
vishysblue@gmail.com 19/09/2012 1
yann-o@hotmail.fr 07/07/2015 0
yannnsheng@hotmail.com 22/09/2012 1
thilaxanschool@gmail.com 18/09/2013 1
我试图使用以下方法:
SELECT [EMAIL]
,min([DATEJOIN]) as [DATEJOIN]
, [NEWSLETTER]
FROM [test].[dbo].[first]
group by [EMAIL], [NEWSLETTER]
但不起作用。我需要决定如何处理“通讯”字段。有什么想法吗?
发布于 2015-09-02 06:48:31
我建议只使用重复值查找所有内容,并使用某种脚本删除旧的值。
从test.dbo.first选择电子邮件,其计数(*)>1
如果你不想这样做,你可以这样做:
从第一个a.*内部连接(选择email,min(datejoin)作为第一组电子邮件中的连接)b在a.email = b.email和a.datejoin = b.datejoin上
应该能行的。
https://stackoverflow.com/questions/32346221
复制相似问题