此查询将显示哪些[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] 值。如果您还想返回 TableA.[Serial Number] 在 TableB 中不存在的行,请将连接更改为 LEFT JOIN。
如果 [Model Number] 和/或 [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])