【问题标题】:Comparing two tables in MS-Access and find / show only differences比较 MS-Access 中的两个表并仅查找/显示差异
【发布时间】:2019-07-17 17:06:50
【问题描述】:

我在 MS Access 中有两张表,一张包含当前活动客户,一张包含整体客户。我需要比较两者并找出整个客户表中哪些客户不活跃。这两个表具有非常相似的结构(SSN、Fname、Lname、地址、邮政编码等)。

我尝试通过使用 Access 中的“查找不匹配的查询向导”来解决此问题,使用 SSN 作为字段来关联表。然而,它最终将整个桌子吐回给我,没有过滤。

这是我从向导切换到我尝试过的 SQL 视图时的代码:

SELECT [Client Table].[Client Last Name], [Client Table].[Client FirstName], 
[Client Table].SSN, [Client Table].[Address Street Name]

FROM [Client Table] LEFT JOIN [Active Client List] ON [Client Table].[SSN]
= [Active Client List].[SS#]

WHERE ((([Active Client List].[SS#]) Is Null));

我希望在我的主客户表中找到在活动客户列表表中没有任何记录的客户,但查询从我的主客户表返回所有客户,没有过滤结果。

【问题讨论】:

  • 你的查询应该是你想要的。
  • 为什么要从两张表开始?有一个客户表,其中包含一个标记“非活动”的字段。查询对我有用。
  • 那本来是更好的解决方案,但我继承了另一个表,需要比较一些 irl 上下文。

标签: sql ms-access join


【解决方案1】:

在 where 条件下尽量避免使用 ()

    SELECT [Client Table].[Client Last Name]
            , [Client Table].[Client FirstName]
            , [Client Table].SSN
            , [Client Table].[Address Street Name]

    FROM [Client Table] 
    LEFT JOIN [Active Client List] ON [Client Table].[SSN] = [Active Client List].[SS#]

    WHERE [Active Client List].[SS#]  Is Null;

【讨论】:

  • Parens 对我来说不是问题。 Access 会自动添加它们。
  • 是的,我删除了括号,对我的输出没有任何影响。但是,当我尝试按另一个变量(ex 的名字)进行过滤时,它会过滤结果,所以我觉得这可能是表格结构的问题?
  • 更新您的问题添加适当的数据样本..您的实际结果,您的预期结果和工作查询也是..
猜你喜欢
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
相关资源
最近更新 更多