表格如下所示:
id group name
1 1 A
2 1 A
3 2 A
4 2 B
5 3 A
我想选择同一组中具有多个不同名称的行。结果应该如下:
id group name
3 2 A
4 2 B
知道如何实现这一目标吗?
最佳答案
您可以通过聚合获取组:
select group
from t
group by group
having min(name) <> max(name);
您可以使用 join
、in
或 exists
获取原始行:
select t.*
from t
where t.group in (select group
from t
group by group
having min(name) <> max(name)
);
注意:group
对于列来说是一个糟糕的名称,因为它是 SQL 关键字和 MySQL 保留字。
关于MySQL 选择一组列,在另一列中具有多个变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41177058/