一尘不染

SQL查询以查找多个范围内的值

sql

我有包含事件日期和3个范围的MySQL数据库,即from1-to1,from2-to2,from3-to3
每个范围都有不同的价格,即from1-to1 rate1,from2-to2 rate2,…

因此每个范围有3列:从,到和评分。

我正在尝试查找返回给定月份汇率的查询,这意味着找到该月份所处的范围并返回该范围的汇率。

有任何想法吗?
谢谢!


阅读 202

收藏
2021-03-17

共1个答案

一尘不染

看来您的数据模型未规范化。您应该考虑有关创建其他表的建议。

下面是一个非常丑陋的查询,它检查日期是否在三个范围内,然后返回匹配率。

select case 
        when date '2010-12-05' between range1_from and range1_to then range1_rate
        when date '2010-12-05' between range2_from and range2_to then range2_rate
        when date '2010-12-05' between range3_from and range3_to then range3_rate
       end as rate
  from events
 where date '2010-12-05' between range1_from and range1_to
    or date '2010-12-05' between range2_from and range2_to
    or date '2010-12-05' between range3_from and range3_to;
2021-03-17