2016-02-10 57 views
0

我一直在尋找一個簡單的解決方案來解決一個非常小的問題。我有一個巨大的記錄集(〜120,000),我需要篩選重複,分配一個序列號,每組重複的,像Assign#如下: enter image description here爲每組重複記錄分配連續編號

最後,我想實現這一點: enter image description here

我使用P1P2,和P3字段作爲查詢的一組排序參數(升序/降序),以確定每個組相同的NCBI擊中最好/頂部Name。 我已經嘗試了很多東西,而且我的主要問題是訪問中途死機,我不知道腳本是否有效。

FROM [sortquery] 
WHERE ((([sortquery].Name) In 
(
    SELECT TOP 1 [sortquery].Name 
    FROM [sortquery] AS Dupe 
    WHERE Dupe.NCBI=[sortquery].NCBI 
    ORDER BY Dupe.NCBI 
))) 
ORDER BY [sortquery].NCBI; 

我接受任何建議和更正!感謝您的幫助=)

+0

您在使用MySQL或MS訪問?他們是非常不同的數據庫。 –

+1

他在「訪問凍結一半」的問題中說。我的猜測是他正在使用Access。 –

+0

是的,我使用Access 2007-2013 – Shtork

回答

0

傳統的方法是計算:

SELECT 
    *, 
    (Select Count(*) 
    From Sortquery As S 
    Where S.NCBI = Sortquery.NCBI 
     And S.P1 * 1000 + S.P3 >= Sortquery.P1 * 1000 + Sortquery.P3) As [Assign#] 
FROM 
    [sortquery] 
ORDER BY 
    NCBI Asc, 
    P1 Desc, 
    P3 Desc, 
    [Name] Asc, 
    [Assign#] Asc 
+0

感謝古斯塔夫,但計數選項由於某種原因不起作用。我開始認爲我可能會將數字(*)設置在錯誤的字段中。我使用了你的建議腳本,其結果是大部分字段標記爲「1」。唯一的地方有「2」的實際全部記錄重複(全部5個字段);而我的目標是基本上要統計每組「NCBI」字段重複。 – Shtork

+0

你說得對。請參閱僅用NCBI編輯並與P1和P3相關。 – Gustav

+0

我也試過)))它只會將總計數分配給每個dup記錄。我認爲每組重複記錄必須有一個自動編號功能,對重複數據的計數只需要返回總計而不是每個重複記錄的順序。 – Shtork