我正在尝试查找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。
答案 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);