查找并显示所有唯一的ID,其中第二列条目均重复

时间:2018-10-12 10:52:44

标签: 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    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 Workbench。

3 个答案:

答案 0 :(得分:1)

一种方法是计算每个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_concat(id2)添加到外部select

如果您的意思是id2 的所有id值都相同并且与其他ID一起出现,则将having count(distinct id2)添加到{{1} }条款。

答案 1 :(得分:0)

使用相关子查询

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)

答案 2 :(得分:0)

请尝试以下查询:

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);