2015-03-30 29 views
0

我想創建一個查詢,只有在兩個字段具有匹配的數據時才能查找和刪除重複項。不意味着這兩個字段完全匹配,就像字段A和字段B都具有「未處理」,但從某種意義上說,表中的兩個記錄在字段A中具有「1234」,在字段B中具有「未處理」,那麼整行記錄應該被刪除,並且只有最舊的記錄(清楚地接近列標題的記錄)纔會留在表格中。僅在兩個字段具有匹配數據時才查找並刪除重複項Ms Access

希望這是有道理的。謝謝!

回答

0

與往常一樣,在進行任何刪除操作之前,一定要備份您的訪問數據庫。

注意,您可以通過切換到查詢上的「SQL」視圖來創建這些查詢。 (而不是默認的「設計」視圖)。

步驟1 - 識別重複的數據。按查詢創建一個生成表組,然後按照您想要檢查重複項的2個字段進行分組,然後進行計數和最大值。篩選以僅顯示計數> 1的記錄。將其另存爲「Query1」。這將創建一個名爲TEMP_DeleteThese的臨時表。

SELECT Table1.CaseID, Table1.Status, 
     Count(Table1.ID) AS CountOfID, 
     Max(Table1.ID) AS MaxOfID 
INTO TEMP_DeleteThese 
FROM Table1 
GROUP BY Table1.CaseID, Table1.Status 
HAVING (((Count(Table1.ID))>1)); 

2步 - 創建基於TEMP_DeleteThese刪除查詢和聯接回到原來的表,通過「最大ID」字段,這將是最新的重複記錄。

DELETE DISTINCTROW Table1.* 
FROM TEMP_DeleteThese INNER JOIN Table1 ON TEMP_DeleteThese.MaxOfID = Table1.ID; 

運行make表和刪除查詢多次根據需要刪除所有重複項。

我在這裏做了一個假設,你有一個主鍵(在這種情況下是「Table1.ID」),它是從低數字開始的自動編號,並計數到更高。

+0

我很感謝這個偉大的解釋,但我不知道如何創建任何你剛纔所說的。如果它是用SQL編寫的,我會知道在哪裏放置我的表和字段名稱,但實際上是從頭開始構建它,我做不到。我對Access相當陌生,只知道如何構建簡單的查詢:( – Lilly 2015-03-31 18:28:56

+0

這是一次性練習來移除重複項,還是需要有可重複的過程?如果使用更具體的字段名稱編輯問題,我可以嘗試構建SQL。 – 2015-03-31 18:49:08

+0

這肯定是可重複的。字段「caseid」和字段「狀態」是指兩個字段,謝謝。 – Lilly 2015-03-31 19:37:13

相關問題