我一直在寻找解决一个简单问题的简单方法。我有大量记录(〜120,000),需要筛选重复记录,为每组重复记录分配一个序号,例如下面的Assign#
:
最终,我正在尝试实现以下目标:
我将P1
,P2
和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;
我愿意接受任何建议和更正!感谢您的帮助=)
最佳答案
传统方法是计算:
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/