gpt4 book ai didi

postgresql - Postgres CIDR。如何只选择没有子网的网络?

转载 作者:行者123 更新时间:2023-11-29 12:48:01 29 4
gpt4 key购买 nike

我有一个 Net 表,其中是网络列表

-- 表:净值

CREATE TABLE net
(
id serial NOT NULL,
cidr cidr,
description text,
CONSTRAINT net_pkey PRIMARY KEY (id )
)

我需要选择所有没有的网络。属于其他网络。即只有没有子网的网络。如何构建查询?

苹果酒:
10.0.0.0/8
10.1.0.0/16
10.2.0.0/16
10.3.0.0/16
10.3.1.0/24
10.3.2.0/24
10.3.3.0/24
10.15.1.0/24
10.15.2.0/24
10.15.3.0/24
172.20.0.0/16
172.21.0.0/16
172.0.0.0/8
11.11.11.0/24
评分最高的网络是 10.0.0.0/8、172.0.0.0/8、11.11.11.0/24

最佳答案

我是这样理解你的问题的:您需要不包含在任何其他网络规范中的所有网络规范,即不属于另一个网络的子网。

试试这个:

SELECT *
FROM net
WHERE NOT EXISTS (SELECT cidr FROM net n WHERE n.cidr >> net.cidr);

产生您预期的结果。
看看章节Network Address Functions and Operators在手册中了解更多关于 >> 运算符的信息。
使用 NOT EXISTS 进行半连接可能是最快的方法。

关于postgresql - Postgres CIDR。如何只选择没有子网的网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8132468/

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