从行组合中查找重复项
Posted
技术标签:
【中文标题】从行组合中查找重复项【英文标题】:find duplicate from combination of rows 【发布时间】:2018-09-14 06:25:42 【问题描述】:我有如下表格:-
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
但是这个查询没有给我预期的结果。
【问题讨论】:
您的查询没有给您预期的结果吗? 不.. 它没有 您目前的结果有什么不妥之处? Your query is working exactly as expected。你一定是打错字了。 我认为你已经简化了你正在做的事情,我们这里的问题是你的简化版本绝对可以满足你的需求。我怀疑你需要看看你的真实版本与简单版本有何不同。 【参考方案1】:您只想删除查询中的计数,因此您可以尝试使用以下计数。
SELECT
SampleId1 , SampleId2
FROM
Test_group
GROUP BY
SampleId1 , SampleId2
HAVING
COUNT(1) > 1;
【讨论】:
【参考方案2】:我认为您只是不想在您的选择中投射计数结果,否则您的预期结果和查询所有 100% 正确的事情只需从选择中删除 count(*)
SELECT
SampleId1 , SampleId2
FROM
t
GROUP BY
SampleId1 , SampleId2
HAVING
COUNT(*) > 1
SampleId1 SampleId2
1 2
2 4
【讨论】:
【参考方案3】:你想得到重复的行,这就是解决方案
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
【讨论】:
不。不修。 (1)count(*)
表达式应该有一个别名。 (2) SELECT a.*
与 GROUP BY a.SampleId1
?请在将其作为答案发布之前测试您的查询,除非您确定您的查询有效
@Squirrel 我测试过here 没问题
OP 没有使用mysql
以上是关于从行组合中查找重复项的主要内容,如果未能解决你的问题,请参考以下文章