【发布时间】: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