MS Access 查询 WHERE NOT EXISTS

Posted

技术标签:

【中文标题】MS Access 查询 WHERE NOT EXISTS【英文标题】:MS Access query WHERE NOT EXISTS 【发布时间】:2016-04-27 15:39:54 【问题描述】:

我一直在四处寻找,但无法解决这个问题。

我有两个来自两个查询的表

SELECT [Account Combination].[Account Number] & [Account Combination].[Cost Center] & [Account Combination].Amount as Val1 FROM [Account Combination];

SELECT [Account Combination].[Account Number] & [Account Combination].[Cost Center] & [Account Combination].Amount AS Val1 FROM [Account Information] INNER JOIN ([Cost Center] INNER JOIN [Account Combination] ON [Cost Center].[Cost Center Number] = [Account Combination].[Cost Center]) ON [Account Information].[Account Number] = [Account Combination].[Account Number];

Table1 有 1800 行,Table2 有 1600 行。我想看看在 Table1 中找到哪些在 Table2 中没有找到,即 200。

我已经尝试过 Table1 NOT EXISTS Tabel2,但由于一直出现语法错误,因此无法使其正常工作。

感谢您的宝贵时间, 西蒙。

【问题讨论】:

正确标记您的问题以快速获得正确答案 【参考方案1】:

您可以使用LEFT OUTER JOINWHERE 条件(如下所示)来完成此操作

select t1.*
from (SELECT [Account Combination].[Account Number] & [Account Combination].[Cost Center] & [Account Combination].Amount as Val1 
FROM [Account Combination]) t1
left join (
SELECT [Account Combination].[Account Number] & [Account Combination].[Cost Center] & [Account Combination].Amount AS Val1 
FROM [Account Information] INNER JOIN ([Cost Center] INNER JOIN [Account Combination] 
ON [Cost Center].[Cost Center Number] = [Account Combination].[Cost Center]) 
ON [Account Information].[Account Number] = [Account Combination].[Account Number]) t2 
on t1.Val1 = t2.Val1 
where t2.Val1 is null;

【讨论】:

【参考方案2】:

看看:This excellent answer

它回答了如何使用 NOT EXISTS 的问题。 顺便说一下,IS NULL 子句更快。

【讨论】:

以上是关于MS Access 查询 WHERE NOT EXISTS的主要内容,如果未能解决你的问题,请参考以下文章

将 12 个具有不同“where”条件的 MS Access 查询组合到一个查询中

MS-Access:SQL JOIN 和 INSERT INTO 与 WHERE 慢

如何在连接到 MS SQL 服务器的 MS Access“Pass Trough”查询中使用组合框输入正确编写 WHERE 语句

如何在WHERE子句中使用MS Access SQL子查询来替换长OR表达式

更新查询 MS Access 加入

Sum() 使用 IIF() 或 MS Access 中的 Where 子句