如何编写SQL查询返回给定值所属区间对应的单行数据
实现方案
你的需求本质是匹配给定数值所在的区间对应的表行,通过区间条件过滤即可实现,具体如下:
前提说明
从你给出的输入输出规则可反推,你的SQL表存储的是数值区间映射数据,我们假设表名为range_map,区间下限字段为min_value,区间上限字段为max_value,你可以根据实际表结构替换对应的字段和表名。
核心查询语句
如果你的区间是闭区间(即包含上下限数值),使用如下写法:
SELECT * FROM range_map WHERE 输入数值 BETWEEN min_value AND max_value;
如果你的区间是左闭右开(即仅包含下限、不包含上限),调整为如下写法:
SELECT * FROM range_map WHERE 输入数值 >= min_value AND 输入数值 < max_value;
效果验证
按你给出的测试场景:
- 输入数值为32时,会匹配到
min_value<=32<=max_value的第2行数据 - 输入数值为70时,会匹配到
min_value<=70<=max_value的第4行数据
如果存在区间重叠的情况,且仅需要返回第一条匹配结果,可以在语句末尾加LIMIT 1,或者根据你的业务规则加排序逻辑后再限制返回条数。
内容的提问来源于stack exchange,提问作者Sara Mannings
相关产品推荐
相关产品推荐

