从行组合中查找重复项

问题描述 投票:0回答:3

我有如下表: -

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

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

sql sql-server sql-server-2008-r2
3个回答
1
投票

我想你只是不想在你的选择项目计数结果其他明智的你的预期结果和你的查询所有的东西100%正确只是从select中删除count(*)

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

SampleId1   SampleId2
1             2
2             4

2
投票

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

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

0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.