1
我在Access 2003中有两个表格,这些表格包含型号和帐号,序号是主键。我怎么能比较两张表中的同一个序列号,看看有什么变化?提取数据和比较Microsoft Access
例如:
比方说第2行是从表A和行3是从表B,我将如何从一个表(第2行)中提取的行并将其与相同的主键入不同的表格(第3行)。
我在Access 2003中有两个表格,这些表格包含型号和帐号,序号是主键。我怎么能比较两张表中的同一个序列号,看看有什么变化?提取数据和比较Microsoft Access
例如:
比方说第2行是从表A和行3是从表B,我将如何从一个表(第2行)中提取的行并将其与相同的主键入不同的表格(第3行)。
这个查询会告诉你哪些[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]
值是存在两个表所示。如果您还想返回TableB
中不存在TableA.[Serial Number]
的行,请将联接更改为LEFT JOIN
。
如果[Model Number]
和/或[Account Number]
可以包含空值,则比较将更具挑战性。如果您将在Access应用程序会话中运行查询,则可以使用Nz()
来应对空值。
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])
应该是什么的比较结果如何? –
它只会覆盖TableA中的数据并在update_type列中添加更改 – heinst