0

我一直在寻找一个简单的解决方案来解决一个非常微不足道的问题。我有大量记录(~120,000),我需要筛选重复项,为每组重复项分配一个序列号,如下Assign#所示: 在此处输入图像描述

最终,我正在努力实现这一目标: 在此处输入图像描述

我使用P1P2P3字段作为查询中的一组排序参数(升序/降序)来确定Name每组相同 NCBI 命中的最佳/顶部。我已经尝试了很多东西,我的主要问题是访问中途冻结,我真的不知道脚本是否正常工作。

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;

我愿意接受任何建议和更正!感谢您的帮助 =)

4

1 回答 1

1

传统的方法是计数:

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
于 2016-02-11T07:22:45.903 回答