我一直在寻找解决一个简单问题的简单方法。我有大量记录(〜120,000),需要筛选重复记录,为每组重复记录分配一个序号,例如下面的Assign#


最终,我正在尝试实现以下目标:


我将P1P2P3字段用作查询中的一组排序参数(升/降),以确定每组相同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;


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

最佳答案

传统方法是计算:

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

关于mysql - 为每组重复记录分配序号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35326417/

10-12 22:13