2013-07-15 69 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])