MySQL:按日期返回第一次出现或记录

时间:2015-03-25 02:18:36

标签: mysql

我尝试按主键和日期(来自时间戳列)返回第一次出现的ID。以下是数据外观的示例: enter image description here

在此示例中,应返回以下ID: 111,333,444

注意:我想通过电子邮件/日期重新删除(从最短时间戳返回id)。返回333和444,因为虽然绑定到同一电子邮件,但它们具有不同的日期。 222没有返回,因为与111相同的电子邮件/日期绑定,其中111具有更早的时间戳

2 个答案:

答案 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