如何通过 sql 查询去除重复项

How to get rid of duplicate by sql query

我有一个数据库 table,用于存储电子邮件地址数据、加入日期和专栏通讯 (yes/no)。但是,时事通讯栏中有很多具有不同日期和值的重复电子邮件地址。我需要编写 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]

但是没用。我需要决定如何处理 Newsletter 字段。有什么想法吗?

我建议只查找具有重复值的所有内容并使用某种脚本删除旧值。

SELECT 电子邮件 来自 [测试].[dbo].[第一] 有 count(*) > 1

如果你不想这样做,你可以这样做:

SELECT a.* 从第一个 a inner join (select email, min(datejoin) as join from first group by email) b b 在 a.email = b.email 和 a.datejoin = b.datejoin

哪个应该有效。