2015-03-25 31 views
-2

我試圖返回的ID的第一次出現,由主鍵和日期(從時間戳列)返回第一次出現或記錄。這裏的數據將如何看一個例子: enter image description hereMySQL的:按日期

在這個例子中,下面的ID應該返回: 111,333,444

注:我想重複數據刪除通過電子郵件/日期(從最小時間戳返回ID)。返回333和444,因爲綁定到同一封電子郵件時,它們有不同的日期。 222沒有回來,因爲綁在同一個電子郵件/日期爲111,其中111具有較早時間戳

+2

你爲什麼不回到222? – 2015-03-25 02:20:04

+0

我想重複數據刪除通過電子郵件/日期(從最小時間戳返回ID)。返回333和444,因爲綁定到同一封電子郵件時,它們有不同的日期。 222沒有被返回,因爲綁定到與111相同的電子郵件/日期,其中111具有較早的時間戳。 – cometrico 2015-03-25 02:34:38

+0

。 。這是一個巨大的澄清,應該真的加入到問題中。 – 2015-03-25 02:37:53

回答

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; 
0

試試這個:

create table your_table(id int, email varchar(10), t timestamp) 
; 
insert into your_table values 
(111,'[email protected]','2015-01-01 00:00:00'), 
(222,'[email protected]','2015-01-01 10:00:00'), 
(333,'[email protected]','2015-01-01 08:00:00'), 
(444,'[email protected]','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