【发布时间】:2018-01-29 03:40:49
【问题描述】:
所以我被这个问题困住了,我猜我的 MySQL 不够好,无法自己解决。
作为一个例子,让我们考虑这个表:
绿色条目表示我的查询的所需输出,仅保留 ENTRY_2 是多次出现的值的行。
我现在尝试的都是这样的:
select *
FROM mytable
GROUP BY ENTRY_2
HAVING COUNT(*) > 1;
但出于明显的原因,它并不好(甚至不起作用)。
感谢您的宝贵时间。
【问题讨论】:
所以我被这个问题困住了,我猜我的 MySQL 不够好,无法自己解决。
作为一个例子,让我们考虑这个表:
绿色条目表示我的查询的所需输出,仅保留 ENTRY_2 是多次出现的值的行。
我现在尝试的都是这样的:
select *
FROM mytable
GROUP BY ENTRY_2
HAVING COUNT(*) > 1;
但出于明显的原因,它并不好(甚至不起作用)。
感谢您的宝贵时间。
【问题讨论】:
我猜
SELECT * FROM mytable WHERE ENTRY_2 IN (
SELECT ENTRY_2
FROM mytable
GROUP BY ENTRY_2
HAVING COUNT(*) > 1
);
是你想要的。
【讨论】:
我会使用exists:
select t.*
from mytable t
where exists (select 1 from mytable t2 where t2.entry2 = t.entry2 and t2.entry1 <> t.entry1);
【讨论】: