2017-10-08 43 views
0

我在同一臺計算機上的數據庫的多個版本。這些具有相同的 數據庫名稱,字段和表名稱。我想(不使用服務器)我如何可以訪問單個SQL語句2個數據庫(表名,數據庫名相同)OLEDB

我願意將它們合併爲不同的DB的可能有一定的差異(即其他記錄,或字段值的更改)

我有2個連接2個不同的數據庫,在我的電腦喜歡訪問2個DB中使用SQL一樣,以獲得差異:

(SELECT * FROM [].DB1Table EXCEPT SELECT * FROM [].DB2Table) 
UNION ALL 
(SELECT * FROM [].DB2Table EXCEPT SELECT * FROM [].DB1Table) 

我所看到的解決方案,如:(這是包含以顯示如何限定表訪問2級不同的表的一個例子。)

select t1.ID, t1.Name, t2.Name 
from [DBOne].[dbo].[TableOne] as t1 
inner join [DBbTwo].[dbo].[TableTwo] as t2 on t1.ID = t2.ID 

我試圖讓2個表之間的差異[FROM DB1Table選擇除SELECT * FROM DB2Table),然後再通過和合並的差異, 但我不知道該如何與我OLEDB DB連接爲此在VB網。 (這兩個數據庫是Access數據庫)

有沒有辦法做到這一點?

+1

的連接來連接到一個數據庫。有很多方法可以鏈接和導入其他數據庫中的表格,但尚不清楚*您要做什麼。 JOIN和UNION是兩個不同的東西。此外,將鼠標懸停在您的標籤選項上並重新考慮。請閱讀[問]並參加[遊覽] – Plutonix

+0

,如果它們位於不同的SQL服務器上,則無法使用單個查詢比較表。 –

+0

@AKunin你可以使用鏈接服務器,或者如Parfait的答案中所示。 –

回答

1

考慮連接到外部數據庫內嵌到這是在MS SQL訪問方言可用特徵查詢。並使用NOT EXISTS子句檢索不匹配的記錄。下面假定一個連接到DB1其中DB2的表外部引用。

SELECT * FROM myTable t1 
WHERE NOT EXISTS 
    (SELECT 1 FROM myTable t2 IN 'C:\Path\To\External\Database.accdb' 
    WHERE t1.ID = t2.ID) 

UNION 

SELECT * FROM myTable t2 IN 'C:\Path\To\External\Database.accdb' 
WHERE NOT EXISTS 
    (SELECT 1 FROM myTable t1 
    WHERE t2.ID = t1.ID) 
+0

我正在嘗試 - 會報告回來 – Alan

相關問題