从行组合中查找重复项
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
我有 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