MySQL:在最近的日期加入

MySQL:在最近的日期加入,mysql,join,Mysql,Join,我有一个包含日期和值的表: table_1 ------- dt x 2018-01-01 1 2018-01-06 4 2018-01-07 2 2018-01-12 3 我还有另一张包含日期的表格: table_2 ------- dt 2018-01-01 2018-01-03 2018-01-04 2018-01-06 2018-01-08 2018-01-09 2018-01-11 我想创建一个新表my_joined_表 包含表2和表2中的所有日

我有一个包含日期和值的表:

table_1
-------
dt           x
2018-01-01   1
2018-01-06   4
2018-01-07   2
2018-01-12   3
我还有另一张包含日期的表格:

table_2
-------
dt
2018-01-01
2018-01-03
2018-01-04
2018-01-06
2018-01-08
2018-01-09
2018-01-11
我想创建一个新表my_joined_表

包含表2和表2中的所有日期 对于每个日期,包含表_1.x的最新值,该值不比给定行中的日期新 因此,结果应该是:

my_joined_table
---------------
dt           x
2018-01-01   1
2018-01-03   1
2018-01-04   1
2018-01-06   4
2018-01-08   2
2018-01-09   2
2018-01-11   2

这可能是一个标准问题,但我似乎无法解决它。非常感谢您的帮助。

此查询将为您提供所需的结果。它将表_2连接到表_1上的表_1,表_1的最大dt小于或等于表_2 dt值:

要创建my_joined_表,只需使用查询:

SELECT t2.dt, t1.x
FROM table_2 t2
JOIN table_1 t1 ON t1.dt = (SELECT MAX(dt) FROM table_1 WHERE table_1.dt <= t2.dt)
dt          x
2018-01-01  1
2018-01-03  1
2018-01-04  1
2018-01-06  4
2018-01-08  2
2018-01-09  2
2018-01-11  2
CREATE TABLE my_joined_table AS
SELECT t2.dt, t1.x
FROM table_2 t2
JOIN table_1 t1 ON t1.dt = (SELECT MAX(dt) FROM table_1 WHERE table_1.dt <= t2.dt)