2017-03-08 85 views
3

我有兩個表。第一(LOG)表示與ID,一個timestamp和任意其他列的日誌文件:根據日期範圍加入列

id   timestamp 
    1 2016-01-11 15:14:33 
    2 2016-01-12 15:14:33 
    3 2016-01-13 15:14:33 
    4 2016-01-14 15:14:33 
    5 2016-01-15 15:14:33 
    6 2016-01-16 15:14:33 
    7 2016-01-17 15:14:33 
    8 2016-01-18 15:14:33 
    9 2016-01-19 15:14:33 
    10 2016-01-20 15:14:33 

第二表(STATUS)存儲狀態和相應的日期,從其中在該狀態是「活性「一:

 date status 
2016-01-02  A 
2016-01-13  B 
2016-01-18  C 

狀態A開始在2016-01-02和活躍,直到2016-01-13等。

我想加入這些以表來實現表看起來像這樣:

id   timestamp status 
    1 2016-01-11 15:14:33  A 
    2 2016-01-12 15:14:33  A 
    3 2016-01-13 15:14:33  B 
    4 2016-01-14 15:14:33  B 
    5 2016-01-15 15:14:33  B 
    6 2016-01-16 15:14:33  B 
    7 2016-01-17 15:14:33  B 
    8 2016-01-18 15:14:33  C 
    9 2016-01-19 15:14:33  C 
    10 2016-01-20 15:14:33  C 

我怎樣才能做到這一點使用MySQL?

+0

什麼是第一列? – Strawberry

+0

@Strawberry只是某種行號,實際上並不在表中 – ottlngr

+0

擺脫它。這沒有幫助。 – Strawberry

回答

1

您可以使用子查詢來獲取最新的status像這樣:

select t.* , (
    select s.`status` 
    from s 
    where s.`date` < t.`timestamp` 
    order by s.`date` desc 
    limit 1 
    ) as `status` 
from t; 

rextester演示:http://rextester.com/KAGOV11673

+0

回答我的問題+演示 - 優秀! – ottlngr

+0

@ottlngr樂於幫忙! – SqlZim