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 )