方案一 我有我想要添加到一個名爲existingTable表中的兩個新領域。添加這些字段後,我可以更新某些而不是所有包含這些字段數據的記錄。會有空白的條目,我很好。添加新的領域,以現有的表,將數據插入到適當的位置,然後加入
問題一 我想,以確保正確的記錄被更新。現有表和傳入數據表的主鍵是Email。
建議的解決方案之一 看起來像這樣的更新查詢是解決方案。
UPDATE existingTable SET existingTable.newField1 = incomingDataTable.newField1,existingTable.newField2 = incomingDataTable.newField2 WHERE existingTable.Email = incomingDataTable.Email
你覺得呢?表是用新字段更新以正確的記錄&數據
兩個方案 後,我想加入這個表和另外兩個人。我希望所有條目即使在某些字段爲空的情況下也能加入此連接。我不希望排除任何記錄。
順便說一句,這些表中的每個記錄與其他表中的夥伴有一對一的關係。不應有任何重複記錄。在過去,我見過Access使用INNER JOIN,它排除了沒有newField1和newField2值的記錄。這不是我想要的。
問題 我在連接表沒有經驗。不同的聯接對我來說有點混亂。
建議的解決方案 是否參加我用一定關係,因爲這三個待連接的表應該有一個一對一的關係?
SELECT * FROM existingTable FULL JOIN tableToJoinWith1,tableToJoinWith2 在existingTable.Email = tableToJoinWith1.Email,tableToJoinWith1.Email = tableToJoiNWith2.Email
「明確你的方案2.我假設你的意思是你想要的所有來自existingTable的行,即使電子郵件字段中沒有任何其他表匹配。在這種情況下,您需要使用LEFT JOIN:「
還有另一個我忘記提到的限制。偶然地,這些表格之間有不同數量的記錄,即使它們應該是1比1。是的,重要的是顯示現有表中的所有記錄。我認爲LEFT JOIN是正確的。
感謝您選擇場景1響應。我認爲這聽起來正確。現在嘗試一下。 – user422318
我在使用您的語句時遇到了問題。這就是我認爲我可以使用,基於了與小數據集的測試: UPDATE existingTable INNER JOIN incomingDataTable ON existingTable.Email = incomingDataTable.Email SET [existingTable] [newField1] = [incomingDataTable] [newField1]。 [existingTable]。[newField2] = [incomingDatTable]。[newField2]; 我認爲INNER JOIN不會引起任何問題。 – user422318