MS Access删除任何包含重复电子邮件的行

时间:2016-05-06 17:56:45

标签: sql email ms-access

这是令人愤怒的,因为应该有一些简单的方法来做到这一点,但似乎没有。

我有一个包含多个字段和多行的巨大查询,一列包含用户电子邮件。

然而,有时会有重复 - 两行具有相同的电子邮件(并且可能在其行中的某些或所有其他字段不同或相同等)。

对我来说哪些行消除并不重要,但我想删除任何有重复电子邮件的行。我只想确保在整个查询期间显示一次电子邮件。

例如,如果我有

A A A A Email1
A B A A Email1
K D S F Email1
A A K A Email2
A A K A Email2
A B B A Email2
A C D A Email2
A B B A Email2
K A V D Email2

其中letters =任意字段,Email#代表电子邮件,然后我需要它去

A A A A Email1
A A K A Email2

可以在MS Access中完成吗?

1 个答案:

答案 0 :(得分:1)

考虑在WHERE子句中使用聚合子查询:

SELECT t.Fld1, t.Fld2, t.Fld3, t.Fld4, t.Email
FROM TableName As t
WHERE t.ID IN
   (SELECT Min(sub.ID)
    FROM TableName As sub
    GROUP BY sub.Email);

-- Fld1   Fld2   Fld3   Fld4    Email
--    A      A      A      A    Email1
--    A      A      K      A    Email2

另一种方法是使用MS Access'First()聚合函数,但请注意警告:

  

因为记录通常不按特定顺序返回(除非   查询包括ORDER BY子句),这些记录返回的记录   函数将是任意的。

SELECT First(t.Fld1) AS First_Fld1, First(t.Fld2) AS First_Fld2, 
       First(t.Fld3) AS First_Fld3, First(t.Fd4) AS First_Fld4, 
       t.Email
FROM TableName As t
GROUP BY t.Email
ORDER BY t.ID;