MySQL 在最近的日期加入

MySQL LEFT JOIN ON Closest Date

我正在尝试通过使用范围 table 的联接扩展较小的 table 来创建每日时间点 table。范围 table 定义了我要为其创建数据的日期。指标 table 保存定期持久化的数据。 table 如下所示:

范围

date
2000-01-01
2000-01-02
2000-01-03
2000-01-04
2000-01-05

公制

date A B
1999-12-31 3.4 2.2
2000-01-03 6.2 1.1

日期 table 应定义构建输出 table 的日期范围。我想在大于 Metric.date 的 Range.date 上加入 tables,因此输出如下所示。

输出

date A B
2000-01-01 3.4 2.2
2000-01-02 3.4 2.2
2000-01-03 3.4 2.2
2000-01-04 6.2 1.1
2000-01-05 6.2 1.1

我尝试了几个不同的版本,但都没有成功。这是我到目前为止所拥有的:

CREATE TABLE OUTPUT
SELECT * FROM [db].Range AS d LEFT JOIN [db].Metric AS m ON d.date > 
(SELECT m.date 
         FROM [db].Metric AS m2
         WHERE m2.date < d.date
         ORDER BY m2.date ASC
         LIMIT 1
);

以上 returns 行对应每个日期,其中指标大于日期的指标组合。我可以看到外部 GROUP BY 日期如何解决这个问题,但它看起来很难看,而且性能会非常糟糕。有没有更简单的方法?

提前致谢:)

您似乎想在更小的最近日期加入。你试过了吗:

Select Range.date, A, B
from Range inner join Metric
on Metric.date = (select max(date) from Metric where date < Range.date);