在MS Access SQL中动态比较两个表

时间:2013-10-30 01:11:27

标签: sql sql-server ms-access

请考虑我们有两张桌子 Table1有(3列)
Table2具有相同的3列。

要查找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的东西来比较表中的所有列并找到Table2中不在table1中的新记录?请帮我。我被卡住了。

1 个答案:

答案 0 :(得分: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列。

通常,您只需要加入密钥,因此只要密钥背后的意图匹配,不同的列名称就会很重要。