Mysql 查找并显示所有唯一ID';s,其中第二列条目都是重复的
我试图查找id,其中对于该id,第二列中的所有条目都是重复的,并且存在于一个或多个其他id下。这意味着我不是简单地寻找是否有(id2)=>2 如果这是输入Mysql 查找并显示所有唯一ID';s,其中第二列条目都是重复的,mysql,sql,Mysql,Sql,我试图查找id,其中对于该id,第二列中的所有条目都是重复的,并且存在于一个或多个其他id下。这意味着我不是简单地寻找是否有(id2)=>2 如果这是输入 id id2 1 44 1 44 1 44 2 44 2 44 2 44 2 44 2 46 3 42 3 44 3 4
id id2
1 44
1 44
1 44
2 44
2 44
2 44
2 44
2 46
3 42
3 44
3 44
4 55
4 55
4 55
4 55
输出应为:
id id2
1 44
1 44
1 44
因为id2下的所有条目也存在于id#2中。Id#3不在输出中,因为只有一些条目与另一个Id匹配,所以输出应该只给出所有id2条目都与另一个Id匹配的条目,而不管它有多少条条目
我正在使用MySQL工作台。使用相关子查询
select * from table1 as t1
where exists (select 1 from table2 as t2 where t1.id=t2.id group by id2 having count(distinct id)>=2)
一种方法是计算每个
id2
的唯一ID数。如果您仅对id
值感到满意:
select t.id
from t join
(select id2, count(distinct id) as numids
from t
group by id2
) t2
on t.id2 = t2.id2
group by t.id
having min(numids) > 1;
我不确定获取原始值的价值是什么。获取它们的一个简单方法是将group\u concat(id2)
添加到外部select
如果您的意思是id
的所有id2
值都相同并且与其他id一起出现,那么将having count(distinct id2)
添加到having
子句中。尝试以下查询:
SELECT * FROM table_name WHERE id
IN(SELECT id FROM (SELECT * FROM table_name GROUP BY id,id2)a
GROUP BY id HAVING COUNT(id)=1);
为什么结果中不存在'455',你说的“是重复的”是什么意思?因为没有其他id可以显示三个55条目。对于is duplicate,我的意思是,ID2中该ID的所有条目也存在于不同的ID中。你们这些天才很快,让我试试这个。我尝试了几个示例,他们都检查了,很棒的工作。另外一个小问题是,我还想看看有多少ID2中至少有80%的条目是重复的,也就是说,我有ID#1和ID 2的数字3、4、5和6,我有ID#2和数字3、4、5和8,那么在这种情况下,它将计算为80%是重复的。这是一个困难的加法吗?@Dechesne。我建议你再问一个问题。非常清楚你是如何描述这个问题的(以及80%的真正含义)。你们这些天才很快,让我试试这个。