MySQL-提取不重复某一列的行

MySQL-提取不重复某一列的行,mysql,group-by,Mysql,Group By,假设我有一个这样构造的表: Column1 Column2 Column3 a E f b E g c r h d E i 我只想获得两行: a E f c r h 因为我不想在Column2值重复的地方获取行,特别是我不关心要获取哪一个重复的行,所以第一个行是合适的 我原以为进行此查询会有效,但

假设我有一个这样构造的表:

Column1   Column2    Column3
   a        E           f
   b        E           g
   c        r           h
   d        E           i
我只想获得两行:

 a    E    f
 c    r    h
因为我不想在Column2值重复的地方获取行,特别是我不关心要获取哪一个重复的行,所以第一个行是合适的

我原以为进行此查询会有效,但事实并非如此:

select * from db group by Column2 having column2 != '' 
因为我得到了完全相同的行


这是一个真实的例子

Tabe: mydb
Columns:
id  int(11) AI PK
client  varchar(45)
birth   datetime
email   varchar(45)
phone   varchar(45)


 id   client        birth                email           phone
'1', 'test', '2017-08-12 00:00:00', 'aaa@gmail.com', '57576765767'
'2', 'test', '2017-08-12 00:00:00', 'aaa@gmail.com', '45646456546'
'3', 'test', '2017-08-12 00:00:00', 'aaa@gmail.com', '35435353553'
'4', 'test', '2017-08-12 00:00:00', 'test1@r.com',   '12313212313'
'5', 'test', '2017-08-12 00:00:00', 'test4@r.com',   '23424234234'
查询: 通过电子邮件选择*mydb组

结果:与以前一样

SELECT DISTINCT Column2, Column1, Column3
FROM db
GROUP BY Column2
也许可以

--编辑--

已经忘记了分组方式

---编辑2---


试试这个:

这将仅获取与组中具有最小id的值相匹配的不同电子邮件的数据。如果需要最大id,可以将最小值更改为最大值

注意:id应该是唯一的

查询

select * from mydb where id IN( select min(id) from mydb group by email )

你的意思是不起作用?这是一个和works@JuanCarlosOropeza嗯……真奇怪。我的表的结构中一定有某种特定的东西不允许这种行为,因为在我的数据库中它不起作用。CRI不是数据集中的一行。对不起,我刚刚更新了它。现在还不清楚你在找什么。请注意,您可以编辑问题,包括删除没有意义的部分。如果不起作用,您将获得
AEF
,和
BEG
,因为它们是不同的,但共享相同的
E
ughh,忘记了
分组依据
。在rextexter在线工具上,这同样有效,但在我的表上不起作用。如何调试精确的表和数据。我手动创建了一个副本,它工作起来非常简单。如果你不知道,就不要发帖。这对任何人都没有好处。
select * from mydb where id IN( select min(id) from mydb group by email )