gpt4 book ai didi

mysql - 如何获取相邻记录?

转载 作者:可可西里 更新时间:2023-11-01 08:00:15 26 4
gpt4 key购买 nike

不确定这在纯 SQL 中是否可行(或值得这样做),但无论如何我都会问。

假设我的数据库中有一堆编号的记录(为清楚起见,有额外的空格):

2 3 4     10 11 12 13     55 56 57  91     106 107

现在给定一个数字,例如“11”,我如何检索“10、11、12、13”?即,所有相邻记录没有间隙(所有数字必须彼此相差 +/- 1)。

这可能吗?如果是,怎么办?

最佳答案

这应该可以解决问题。 @target_id 是您的目标值(给定示例中为 11)。

  • 找到所需范围的下限 - 小于或等于您的目标的最大值,其中 value-1 不存在。
  • 找到所需范围的上限 - 大于或等于您的目标的最小值,其中 value+1 不存在。
  • 返回满足下限 <= x <= 上限的行。

简单!

select *
from foo t
where t.id >= ( select max(id)
from foo x
where x.id <= @target_id
and not exists ( select *
from foo x1
where x1.id = x.id - 1
)
)
and t.id <= ( select min(id)
from foo y
where y.id >= @target_id
and not exists ( select *
from foo y1
where y1.id = y.id + 1
)
)

索引您的 id/sequence number 列,我相信性能应该相当不错。

关于mysql - 如何获取相邻记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6194641/

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