这是令人愤怒的,因为应该有一些简单的方法来做到这一点,但似乎没有。
我有一个包含多个字段和多行的巨大查询,一列包含用户电子邮件。
然而,有时会有重复 - 两行具有相同的电子邮件(并且可能在其行中的某些或所有其他字段不同或相同等)。
对我来说哪些行消除并不重要,但我想删除任何有重复电子邮件的行。我只想确保在整个查询期间显示一次电子邮件。
例如,如果我有
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中完成吗?
答案 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;