嗨,我有下表 T:
id 1 2 3 4
col a b a c
我想做一个选择,当 group by(col) 具有 count(col)>1 时返回 id,col
一种方法是
SELECT id,col FROM T
WHERE col IN (SELECT col FROM T GROUP BY(col) HAVING COUNT(col)>1);
实习生选择(从右边开始)返回 'a' 并且主要的一个(左)将返回 1,a 和 3,a
问题是 where in 语句似乎非常慢。在我的真实案例中,内部选择的结果有很多'col',大约 70000 并且需要几个小时。
现在进行内部选择和主选择获取所有 id 和 upcs 并在本地进行交集要快得多。MySQL 应该能够有效地处理这种查询。
我可以用 where in 代替 join 或更快的东西吗?
谢谢