You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access中基于子查询结果获取Table1全量关联记录的SQL问题求助

解决Access中查询重复记录的问题

嘿,我来帮你搞定这个Access查询的问题!你遇到的重复记录问题,根源在于Query1里可能存在同一个ID对应多条符合时间条件的记录,当你用INNER JOIN连接时,每一条Query1里的记录都会和Table1中对应ID的记录匹配一次,自然就产生了重复。

下面给你几种靠谱的解决方案:

方案1:修改Query1返回唯一ID

先调整Query1的SQL,让它只返回符合时间条件的唯一ID,这样连接时就不会重复匹配:

SELECT DISTINCT [ID] 
FROM Table1 
WHERE [Last Updated Date] >= #4/1/2018 4:00:00 AM# 
  AND [Last Updated Date] <= #5/1/2018 4:00:00 AM#

之后再用你原来的连接查询:

SELECT A.* 
FROM Table1 A 
INNER JOIN Query1 B ON A.[ID] = B.[ID]

这次每个ID只出现一次,就不会有重复记录了。

方案2:用IN子句合并为单查询

如果不想单独创建Query1,可以直接把筛选逻辑放到子查询里,用IN子句自动去重:

SELECT * 
FROM Table1
WHERE [ID] IN (
    SELECT [ID] 
    FROM Table1 
    WHERE [Last Updated Date] >= #4/1/2018 4:00:00 AM# 
      AND [Last Updated Date] <= #5/1/2018 4:00:00 AM#
)

IN会自动忽略子查询里的重复ID,所以主查询只会返回每个ID的所有原始记录,不会重复。

方案3:用EXISTS子查询(效率更高)

如果你的数据量比较大,EXISTS通常会比IN更高效,因为它只要找到匹配的ID就停止检索,不会返回所有匹配项:

SELECT A.* 
FROM Table1 A
WHERE EXISTS (
    SELECT 1 
    FROM Table1 B
    WHERE B.[ID] = A.[ID]
      AND B.[Last Updated Date] >= #4/1/2018 4:00:00 AM# 
      AND B.[Last Updated Date] <= #5/1/2018 4:00:00 AM#
)

这个写法的逻辑是:检查当前Table1的记录是否存在同ID且符合时间条件的记录,只要存在就保留这条记录。

内容的提问来源于stack exchange,提问作者Clayton.n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:04:01