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

其中字母=任意字段,电子邮件#表示电子邮件,那么我需要它转到

A A A A Email1
A A K A Email2

这可以在MS Access中完成吗?

考虑在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()聚合函数,但请注意警告:

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

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;

最新更新