我有两张桌子。第一个(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 :(得分: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演示:functionally the same.