选择数据,其中日期为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