gpt4 book ai didi

mysql - 我如何找到数字范围内的差距?

转载 作者:行者123 更新时间:2023-11-29 06:04:25 25 4
gpt4 key购买 nike

我有一个表,它有一个 id,以及代表一系列数字的开始/结束值。我希望找到现有范围之间一定大小(或更大)的第一个差距。例如:

|   id  | start | end |
|-------|-------|-----|
| xz132 | 2 | 5 |
| fd754 | 9 | 12 |
| sb825 | 16 | 23 |

(编辑:ID 不是递增的)

如果我正在寻找大小为 1 的第一个间隙,它应该返回可用范围 1-1。

如果我正在寻找大小为 3 的间隙,它应该返回可用范围 6-8。

如果我要查找大小为 6 的间隙,它应该返回 null 以指示没有间隙,或返回 24-29 以指示在表的末尾添加另一条记录。

最佳答案

这是一个使用变量的解决方案:

select @end+1 start, start-1 end
from (select * from ranges order by start) as base,
(select @gap := 3, @end := 0) as init
where if(@gap < start - @end, 1, if(@end := end, 0, 0))
limit 1;

将分配给 @gap 的数字替换为所需的间隙大小。

对于 @gap := 1,它返回 (1, 1)
对于 @gap := 3,它返回 (6, 8)
对于 @gap := 4,它不返回任何数据

关于mysql - 我如何找到数字范围内的差距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42658062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com