2015-06-12 38 views
1

我試圖做一個查詢,將刪除訪問2010年表中的所有重複行。和我的問題是,該查詢是刪除所有重複記錄(甚至原來的)刪除訪問數據庫中的表中的重複行

所以我們說我有1個紀錄是原始的和2條是重複的,所以煽動刪除2個重複它刪除所有3.

這裏是我做的:

DELETE * 
    FROM Table 
    WHERE [field1] IN (SELECT [field1] FROM [table] As Tmp 
    GROUP BY [field1],[field2],[field3],[field4],[field5] HAVING Count(*)>1); 

任何意見謝謝,麻煩您了。

+0

查找重複查詢嚮導它會給你所有的dups,你必須清理你的自我,我想自動化它。 – Amiaki

+0

該表是否包含自動編號主鍵字段?如果沒有,你可以添加一個嗎? – HansUp

+0

不,我不能添加一個 – Amiaki

回答

0

這些命令應該在標準的SQL服務器中工作。您必須測試它以查看Access是否對它做出任何有趣的事情。

WITH CTE AS(
    SELECT field1, field2, 
     RN = ROW_NUMBER()OVER(PARTITION BY field1 ORDER BY field1) 
    FROM table1 
) 

DELETE FROM CTE WHERE RN > 1 
0

試試這個:

DELETE * 
    FROM Table 
    WHERE [UniqueField] NOT IN (SELECT MIN([UniqueField]) FROM [table] As Tmp 
    GROUP BY [field1],[field2],[field3],[field4],[field5] HAVING Count(*)>1); 

它應該在MS-ACCESS的作品了。

+0

沒有工作。它刪除所有獨特的領域,並離開所有的dups – Amiaki

+0

@Amiaki我做了一個編輯我的文章(我忘了MIN)。您是否嘗試過使用「MIN(...)」表達式? –

+0

與第一個結果相同 – Amiaki