【问题标题】:SQL Range join (not between)SQL 范围连接(不在之间)
【发布时间】:2014-08-03 18:42:52
【问题描述】:

我正在尝试从另一个具有 port_start 和 port_end 列的表中选择所有端口。

假设我有一个名为 Ports 的端口表,而包含范围的表名为 Whitelist。

所以,它看起来像

Ports
-----
 80
120
700

Whitelist
---------
  1 - 100
381 - 500

让我们关注80端口,我想选择白名单之间的内容,然后使用not in/except/whatsoever with between子句将其忽略。

如果不在之间,它不会选择相反的,因为我需要确保所有范围都不适合端口。

有什么好的解决方案可以解决这个问题吗?谢谢

【问题讨论】:

    标签: sql range between


    【解决方案1】:

    试试:

    select p.*
      from ports p
      left join whitelist w
        on p.id between w.port_start and w.port_end
     where w.port_start is null
    

    小提琴: http://sqlfiddle.com/#!2/b37a3/1/0

    【讨论】:

    • 他说“有 port_start 和 port_end 列”。 (“列”复数)
    • 像魅力一样工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    相关资源
    最近更新 更多