mysql - 多列范围

标签 mysql sql

我有一个包含 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/

相关文章:

php - 对 MySQL session /用户的文件权限

mysql - 临时 mysql 表的范围或指定表是临时的

MySQL select into outfile,选择数据量(文件大小限制)

php - mysql 将 3 个查询合并为 3 个类别的 SUM

PHP MySQL - 如何设置MySQL可以同时管理的脚本数量

php - 如何使 Opencart 1.5.6 url 使用产品名称

mysql - MySQL如何将多条记录中的有序数据返回到一条记录中?

MySQL复制

c# - asp.net GridView 批量更新所有单元格

sql - 如何直接从excel更新sql表?