Mysql 查找并显示所有唯一ID';s,其中第二列条目都是重复的

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,其中对于该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    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%的真正含义)。你们这些天才很快,让我试试这个。