2013-10-30 26 views
0

請考慮我們有兩個表
Table1與(3列)
Table2具有相同的3列。比較兩個表動態地在MS Access SQL

要查找Table2但不包含在Table1中的新記錄,我們將使用以下代碼。

SELECT * FROM Table2 AS T2 
WHERE (((Exists (SELECT * 
     FROM 
      Table1 T1 
     WHERE 
      T1.Field1 = T2.Field1 AND 
      T1.Field2 = T2.Field2 AND 
      T1.Field3 = T2.Field3))=False)); 

但是,如果我們不知道表中的列數呢?我們如何編寫一個通用代碼或類似forloop的東西來比較表中的所有列,並查找表2中不在table1中的新記錄?請幫幫我。我卡住了。

+0

你有什麼MS Sql服務器或訪問? –

+0

其實你可以通過內部連接來找出沒有匹配的連接。如果你不知道列的數量,那麼你將不得不制定你的SQL只使用已知的字段。 –

回答

0

當您內部聯接時,您只指定兩個表中的匹配項。您只能找到以下匹配項:

SELECT * 
FROM Table1 t1 
INNER JOIN Table2 t2 ON t2.field1 = t1.field1 
        AND t2.field2 = t1.field2 
        AND t3.field3 = t1.field3 

此查詢應該返回6列。

通常情況下,您應該只需要連接鍵,因此只要鍵後面的意圖匹配,不同的列名就應該很重要。