我尝试按主键和日期(来自时间戳列)返回第一次出现的ID。以下是数据外观的示例:
在此示例中,应返回以下ID: 111,333,444
注意:我想通过电子邮件/日期重新删除(从最短时间戳返回id)。返回333和444,因为虽然绑定到同一电子邮件,但它们具有不同的日期。 222没有返回,因为与111相同的电子邮件/日期绑定,其中111具有更早的时间戳
答案 0 :(得分:0)
根据您的评论,您可以通过获取每个电子邮件/日期组合的最小时间戳来实现此目的。然后,您可以加入以获取该行中的其他信息:
select t.*
from table t join
(select email, min(timestamp) as mints
from table t
group by email, date(timestamp)
) tt
on t.email = tt.email and t.timestamp = tt.mints;
答案 1 :(得分:0)
试试这个:
create table your_table(id int, email varchar(10), t timestamp)
;
insert into your_table values
(111,'a@a','2015-01-01 00:00:00'),
(222,'a@a','2015-01-01 10:00:00'),
(333,'b@b','2015-01-01 08:00:00'),
(444,'b@b','2015-02-01 09:00:00')
select substring_index(ids,',',1)
from (
select email,
date(t) as dt,
group_concat(id order by t) as ids
from your_table
group by email,date(t)
order by email,date(t)
) as tmp
<强> SQL FIDDLE DEMO 强>