有沒有使用SQL拿到2個表之間的差異在Access的方法嗎?,未知領域
我建立一個審計功能,我想從表1,其中一個值(或值)不符合表2的相應記錄返回的所有記錄。主鍵將始終在兩個表格之間匹配。它們將始終包含相同數量的字段,字段名稱和類型。但是,在查詢運行之前無法確定這些字段的編號和名稱。
另外請注意,我在尋找一個訪問SQL解決方案。我知道如何用VBA解決這個問題。
感謝,
有沒有使用SQL拿到2個表之間的差異在Access的方法嗎?,未知領域
我建立一個審計功能,我想從表1,其中一個值(或值)不符合表2的相應記錄返回的所有記錄。主鍵將始終在兩個表格之間匹配。它們將始終包含相同數量的字段,字段名稱和類型。但是,在查詢運行之前無法確定這些字段的編號和名稱。
另外請注意,我在尋找一個訪問SQL解決方案。我知道如何用VBA解決這個問題。
感謝,
有幾種可能性比較與已知的名稱字段,但SQL沒有辦法在不知道名稱的情況下訪問字段。大多數情況下,因爲SQL不考慮字段在表中具有特定的順序。 因此,只要有一個SQL命令爲它(有點像*作爲所有字段的佔位符),在純Access-SQL中完成所需的唯一方法就是。但沒有。 Microsoft Access SQL Reference。
你可以做的是建立在VBA飛的SQL子句。 (我知道,你說過你不想在VBA中這樣做 - 但這是用SQL做的,但是用VBA來創建SQL ..)。 在VBA中做所有事情可能需要一些時間,但是即時創建SQL非常快,您可以將其優化爲特定的表。然後執行SQL是最快的解決方案。
不知道沒有你的表結構,但你也許可以得到,使用使用NOT IN
運算符(OR)完成WHERE NOT EXISTS
像
select * from table1
where some_field not in (select some_other_field from table2);
(OR)
select * from table1 t1
where not exists (select 1 from table2 where some_other_field = t1.some_field);
雖然這是問題,我不能說「some_field」。我不知道字段的名稱或數量。 –
@JamieMarshall,然後考慮採用非sql方法。或者在您的應用程序代碼中進行。 – Rahul
SELECT A.*, B.* FROM A FULL JOIN B ON (A.C = B.C) WHERE A.C IS NULL OR B.C IS NULL;
如果你有表A和B,都與列C,這裏一個再記錄,這是目前在表A,但不是在B.To得到所有單個查詢的不同,一個完整的聯接必須使用,像上面
「除」未出現在訪問SQL –
OKK有效的關鍵字,我將我再次無法使用C.這個問題的全部要點編輯 –
是,我不知道列或他們的名字的數量。 –
我選擇這個作爲答案,因爲它似乎不可能做我在問什麼,這個答案最清楚地解釋了這一點。 –