【问题标题】:Removing duplicate records from JOIN in MS Access从 MS Access 中的 JOIN 中删除重复记录
【发布时间】:2016-01-12 19:35:01
【问题描述】:

我的同事向我寻求有关 MS Access 中连接三个表的查询的帮助。我已经确认JOIN 的顺序和内部/外部状态是我的同事想要的。 (他们有三个表,A、B 和 C;他们想要表 B 中的所有记录以及 A 和 C 中的匹配记录。)

(经过清理的)查询是:

SELECT B.ID, B.Date from (A RIGHT JOIN B on A.ID = B.ID) LEFT JOIN C on B.ID = C.ID
GROUP BY B.ID, B.Date

这会返回正确的行数(大约 16000)。但是,当我将 select 和 group 子句更改为

SELECT B.ID, B.Date, A.Time ...
GROUP BY B.ID, B.Date, A.Time 

然后查询返回重复记录(记录数约为19000)。如何改进查询以消除重复项?

This Stack Overflow answer 帮助我找出了表 B 的 GROUP BY 子句。我曾尝试将该子句作为 GROUP BY B.ID,但收到一条错误消息,指出我没有对 B.Date 进行任何聚合。

【问题讨论】:

  • 告诉我们你的意思是什么?因为是正常的第二次查询有更多的记录。您现在将[ìd, date] 拆分为不同的[time]
  • 尽我们所能告诉结果有具有相同数据的记录。我会仔细检查以确认记录是否相同。

标签: sql ms-access join deduplication


【解决方案1】:

它实际上是在产生重复记录,还是现在从同一日期返回多个不同时间的记录?如果是这样,您将需要评估这些是否真的是出于报告目的的重复记录。如果是,您将希望在 select 子句中将时间与诸如 min(a.time) 或 max(a.time) 之类的内容聚合(仅获取最早或最新的实例)并将其排除在 group by 之外。

【讨论】:

  • 我将评估记录是否包含重复数据。没有什么比确定更重要的了。
  • 不,记录不是 100% 重复的——表 A 上的一个字段具有不同的数据,对应于表 B 上的单个条目。
猜你喜欢
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
相关资源
最近更新 更多