1

我在 Access 2003 中有两个表,这些表包含型号和帐号,序列号是主键。我怎么能去比较两个表中的相同序列号,看看有什么变化?

例如:

在此处输入图像描述

假设第 2 行来自 TableA,第 3 行来自 TableB,我将如何从一个表(第 2 行)中提取一行并将其与不同表(第 3 行)中的相同主键进行比较。

4

1 回答 1

2

此查询将向您显示哪些[Serial Number]值具有不同的值[Model Number]和/或[Account Number]

SELECT
    a.[Serial Number],
    a.[Model Number] AS model_number_a,
    b.[Model Number] AS model_number_b,
    a.[Account Number] AS account_number_a,
    b.[Account Number] AS account_number_b
FROM
    TableA AS a
    INNER JOIN TableB AS b
    ON a.[Serial Number] = b.[Serial Number]
WHERE
       a.[Model Number] <> b.[Model Number]
    OR a.[Account Number] <> b.[Account Number];

请注意,查询只会检查[Serial Number]两个表中都存在的值。如果您还想返回 aTableA.[Serial Number]中不存在的行TableB,请将连接更改为LEFT JOIN

如果[Model Number]and/or[Account Number]可以包含 Null,则比较将更具挑战性。如果您将从 Access 应用程序会话中运行查询,则可以使用Nz()来处理 Null。

WHERE Nz(a.[Model Number], '') <> Nz(b.[Model Number], '')

如果需要从 Access 外部运行查询,请使用IIf()表达式。

WHERE
    IIf(a.[Model Number] Is Null, '', a.[Model Number])
    <>
    IIf(b.[Model Number] Is Null, '', b.[Model Number])
于 2013-07-15T15:07:49.213 回答