2013-07-15 58 views
1

我在Access 2003中有两个表格,这些表格包含型号和帐号,序号是主键。我怎么能比较两张表中的同一个序列号,看看有什么变化?提取数据和比较Microsoft Access

例如:

enter image description here

比方说第2行是从表A和行3是从表B,我将如何从一个表(第2行)中提取的行并将其与相同的主键入不同的表格(第3行)。

+1

应该是什么的比较结果如何? –

+0

它只会覆盖TableA中的数据并在update_type列中添加更改 – heinst

回答

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]值是存在两个表所示。如果您还想返回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])