2017-03-08 116 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