选择数据,其中日期为max(日期)小于x

我有2个表 第一个具有兑换率:选择数据,其中日期为max(日期)小于x

| date | ratio | currency | 

------------------------------

1| 9/09 | 1.0 | EUR |

2| 9/09 | 1.1 | USD | -- no weekend

3| 12/09 | 1.0 | EUR | -- goes from 9 to 12

4| 12/09 | 120.0 | JPY |

第二个具有交易

| date | amount | currency | 

------------------------------

1| 9/09 | 20.0 | EUR |

2| 9/09 | 101.0 | USD | -- weekend

3| 10/09 | 1.0 | USD | -- has 10/09 which is a saturday

4| 10/09 | 10.0 | USD |

两者均包含的日期和货币。 现在我的汇率在周末没有更新,而且不会改变。

我正在寻找一种高效的方式来选择最后可用的数据放入exchange_rate表。换句话说,在失踪日前的最后一天(例如10/09)

我正在使用交易表来获取需要汇率信息的天数列表,以便我可以将其转换一切都是欧元。

全部结果想应该是这样的

| date | amount | currency | ratio | 

----------------------------------------

1| 9/09 | 20.0 | EUR | 1.0 |

2| 9/09 | 101.0 | USD | 1.1 | -- already exists in exchange_rate

3| 10/09 | 1.0 | USD | 1.1 | -- selected because 9/09 is last available line

4| 10/09 | 10.0 | USD | 1.1 |

或者我很好,更新与所需要的数据EXCHANGE_RATE表以及查询,因为最终的查询是更清洁和更容易以后维护

select t.*, 

(select er.ratio

from exchangerates er

where er.date <= e.date and er.currency = t.currency

order by er.date desc

limit 1

) as ratio

from transactions t;

出于性能考虑,你想对指数:上

回答:

您可以使用相关子查询做到这一点。

我会从这开始,看看它是否符合您的需求。

以上是 选择数据,其中日期为max(日期)小于x 的全部内容, 来源链接: utcz.com/qa/262717.html

回到顶部