首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为号码找到正确的桶

为号码找到正确的桶
EN

Stack Overflow用户
提问于 2022-06-20 06:22:34
回答 2查看 38关注 0票数 0

我有一个有不同3-3-4的桶,我需要为这个号码找到合适的桶

1-3 4-6 7-10 11-13 14-16 17-20 21 - 23 24 - 26 27 - 30

找到正确的桶的有效公式是什么,就像第5号是在桶4-6中,18个是在桶17-20中。

需要为此编写sql查询。

EN

回答 2

Stack Overflow用户

发布于 2022-06-20 06:28:25

我会保持一个单独的真正的表格,包含范围值。然后,加入到它以获得您想要的输出。

代码语言:javascript
运行
复制
Table: ranges
start | end
1     | 3
4     | 6
7     | 10
11    | 13
14    | 16
17    | 20
21    | 23
24    | 26
27    | 30

WITH buckets AS (
    SELECT 5 AS val UNION ALL
    SELECT 18
)

SELECT b.val, CAST(r.start AS VARCHAR(10)) + '-' + CAST(r.end AS VARCHAR(10))
FROM buckets b
INNER JOIN ranges r
    ON b.val BETWEEN r.start AND r.end
ORDER BY b.val;
票数 2
EN

Stack Overflow用户

发布于 2022-08-21 17:44:28

对于不重叠的范围,您只需要每个范围的起始值(或者,等效地说,是结束)。然后索引那一列。这是非常有效的:

代码语言:javascript
运行
复制
SELECT ...
    FROM ...
    WHERE n >= ?
    ORDER BY n
    LIMIT 1

由于索引,这在O(1)中运行。(如果包括BTree查找的成本,则为O(BTree))。

更多细节(以IP地址表示):http://mysql.rjweb.org/doc.php/ipranges

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72682967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档