从行组合中查找重复项

find duplicate from combination of rows

我有 table 如下:-

SampleId1   SampleId2    
1              2    
1              2    
2              2    
3              2    
1              4 
2              4    
2              4    
3              5

我要查找重复的组合

例如。 SampleId2 在前两行具有与 SampleId1 重复的值

预期结果:-

SampleId1  SampleId2    
1             2    
2             4

我试过了:-

SELECT
    SampleId1 , SampleId2, COUNT(*)
FROM
    tablename
GROUP BY
    SampleId1 , SampleId2
HAVING 
    COUNT(*) > 1

但是这个查询没有给我预期的结果。

您只是想删除查询中的计数,因此您可以尝试使用下面的计数。

SELECT
    SampleId1 , SampleId2
FROM
    Test_group
GROUP BY
    SampleId1 , SampleId2
HAVING 
    COUNT(1) > 1;

您想获得重复的行,这就是解决方案

SELECT a.*
FROM docs a
JOIN (
    SELECT SampleId1, SampleId2, COUNT(*)
    FROM docs 
    GROUP BY SampleId1, SampleId2
    HAVING count(*) > 1 
) b
ON a.SampleId1 = b.SampleId1
AND a.SampleId2 = b.SampleId2
Group BY SampleId1
ORDER BY a.SampleId2

查看结果here

我认为你只是不想在你的 selection 中投影计数结果,否则你的预期结果和你的查询都是 100% 正确的,只需从 [=13= 中删除计数 (*) ]

SELECT
    SampleId1 , SampleId2
FROM
    t
GROUP BY
    SampleId1 , SampleId2
HAVING 
    COUNT(*) > 1

SampleId1   SampleId2
1             2
2             4