2016-03-01 131 views
0

我試圖更新一個表中的兩個字段,其中第二個表中的兩個字段的值沒有主鍵鏈接兩個表。如何使用另一個表中的值更新一個表中的字段

第二個表沒有主鍵,因爲它是通過轉移表方法創建的,只是爲了將數據從Excel導入到表中。

這裏是我到目前爲止的代碼(目前此代碼不會做任何事情):

SQL = "MERGE TableA AS Target" & _ 
     " USING TableB AS Source" & _ 
     " ON " & _ 
     "(Target.Field1=Source.Field1,Target.Field2=Source.Field2)" & _ 
     " WHEN NOT MATCHED BY Target" & _ 
     " THEN UPDATE (Field1,Field2)" & _ 
     " VALUES (Source.Field1,Source.Field2)" 
+0

請詳細說明你的意思是「問題」。 –

+0

[SQL從一個表更新到另一個基於ID匹配的可能重複](http://stackoverflow.com/questions/224732/sql-update-from-one-table-to-another-based-on-a -id-match) –

+0

問題在於Update沒有做任何事情。我已經測試過:在Excel工作表中,一個Field1的值爲「1111」,Field2的值爲「Microsoft」,即一行。在我的數據庫中僅輸入field2(「Microsoft」),Field1爲空。它要在Field1中插入值「1111」。而已。 – LuckyLuke82

回答

0

我終於設法解決了這個問題。這是爲我工作的唯一合成器:

SQL = " UPDATE TableA" & _ 
     " INNER JOIN TableB" & _ 
     " ON TableB.Field1=TableA.Field1 OR" & _             " TableB.Field2=TableA.Field2" & _ 
     " SET TableA.Field1=TableB.Field1, TableA.Field2=TableB.Field2" 

此語句成功更新這兩個字段如果其中一個在目標表中爲空而不在源表中。

感謝您的所有努力,我希望這會對某人有用,Access在VBA中編碼SQL時相當困難。

0

使用MERGE了點。 https://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx

語法:

MERGE [AS TARGET] 
USING [AS SOURCE] 
ON 
[WHEN MATCHED 
THEN ] 
[WHEN NOT MATCHED [BY TARGET] 
THEN ] 
[WHEN NOT MATCHED BY SOURCE 
THEN ]; 

你不一定要聲明的比較的所有可能結果。你也可以在它們全部上定義相同的動作。我不確定你想在比賽中取得什麼。

+0

你可以編輯這個到我的例子,不知道我應該如何建立合併? – LuckyLuke82

+0

我認爲你在錯誤的網站上。這個社區的目的不是爲了做別人的作業,而是給出一些想法/線索/出發點。請仔細閱讀「MERGE」的文檔,我相信你會找到方法。 – fishmong3r

+0

我會嘗試,這並不意味着你在做我的功課。但對於像我這樣的初學者來說,解釋有點難。感謝提供的鏈接。 – LuckyLuke82

相關問題