gpt4 book ai didi

mysql - 多列范围

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

我有一个包含 2 列的表格,cola 和 colb,代表一系列数字。

示例问题:

cola - colb
1 - 10
11 - 22
33 - 66
67 - 67
  • 如果输入是 7-8,我想要一个提取范围 1-10 的查询。
  • 如果输入是 67 - 80,我想要一个提取 67 - 67 的查询

示例查询:

SELECT * 
FROM example
WHERE vala >= cola
AND valb <= colb

第一个条件对于上面的查询非常有效,但是当 cola = colb 即.. 67 - 67 时它会下降。

<小时/>

以上是我的问题的一个简单示例。问题实际上是一系列 Ips。可乐 - Colb2 = Ip 范围。我已经包含了以防万一上面的示例中缺少某些内容。

   SELECT *
FROM `static_allocation`

WHERE INET_ATON('$network_addr') >= INET_ATON(network_addr)
AND INET_ATON('$broadcast_addr') <= INET_ATON(broadcast_addr)

LIMIT 1
<小时/>

编辑:

好吧,看来我有点错了..

表格数据

10.0.0.0 - 10.0.0.15 
10.0.0.16 - 10.0.0.16

但是,当我尝试选择10.0.0.16 - 10.0.0.20时,它找不到记录..

最佳答案

如果您正在查找至少包含 block 的一部分的第一个范围,请尝试以下条件:

vala <= colb and cola <= valb

这表示搜索范围[vala,valb]必须与目标范围[cola,colb]部分重叠。

在 SQL 中:

select  *
from example
where vala <= colb and cola <= valb
order by
cola -- Lowest network range
limit 1

关于mysql - 多列范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9056169/

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