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

如何在Access中查询并对比未关联的远程数据库

Access中对比两个远程数据库的方法

我有两个远程Access数据库(A.accdb和B.accdb),可通过另一Access数据库使用以下方式查询单表数据:

SELECT * FROM (SELECT * FROM DGConcept IN 'C:\Users\Gusto\Desktop\A.accdb')
SELECT * FROM (SELECT * FROM DGConcept IN 'C:\Users\Gusto\Desktop\B.accdb')

两张表的数据如下:

表A

IDDESCRIPTION
1Jesse Pinkman
2Skyler White
3Henk Schrader

表B

IDDESCRIPTION
1Jesse Pinkman
2Skyler White
3Henk Schrader
4Saul Goodman

尝试用以下语句对比两张表,但未返回任何结果:

SELECT *
FROM 
    (SELECT * FROM DGConcept IN 'C:\Users\Gusto\Desktop\A.accdb') x 
LEFT JOIN 
    (SELECT * FROM DGConcept IN 'C:\Users\Gusto\Desktop\B.accdb') y 
ON (x.[ID] = y.[ID]) 
WHERE ((y.ID) Is Null)

问题原因

原语句使用左连接将A表关联到B表,目的是找出A表存在但B表不存在的记录,但实际需求是找出B表存在但A表不存在的记录(即ID=4的Saul Goodman),逻辑方向错误。

正确查询方法

方法1:调整连接方向(右连接或交换表位置的左连接)

交换表位置后使用左连接,直接查询B表中A表没有的记录:

SELECT y.*
FROM 
    (SELECT * FROM DGConcept IN 'C:\Users\Gusto\Desktop\B.accdb') y 
LEFT JOIN 
    (SELECT * FROM DGConcept IN 'C:\Users\Gusto\Desktop\A.accdb') x 
ON y.[ID] = x.[ID] 
WHERE x.ID Is Null

或者使用右连接:

SELECT y.*
FROM 
    (SELECT * FROM DGConcept IN 'C:\Users\Gusto\Desktop\A.accdb') x 
RIGHT JOIN 
    (SELECT * FROM DGConcept IN 'C:\Users\Gusto\Desktop\B.accdb') y 
ON x.[ID] = y.[ID] 
WHERE x.ID Is Null

方法2:使用NOT EXISTS子查询(更直观)

通过子查询判断B表的记录是否在A表中不存在:

SELECT *
FROM DGConcept IN 'C:\Users\Gusto\Desktop\B.accdb'
WHERE NOT EXISTS (
    SELECT 1
    FROM DGConcept IN 'C:\Users\Gusto\Desktop\A.accdb'
    WHERE DGConcept.ID = [DGConcept IN 'C:\Users\Gusto\Desktop\B.accdb'].ID
)

期望结果

执行上述任一语句后,将得到以下结果:

IDDESCRIPTION
4Saul Goodman

内容的提问来源于stack exchange,提问作者MK01111000

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:01:30