select CONCAT(ip1, '.', ip2, '.', ip3, '.', ip4, '/', sub_mask) from ip where area not in (115, 134) group by ip1, ip2, ip3, ip4, sub_mask上述sql,需要做出以下修改,ip1.ip2.ip3.ip4/sub_mask,查询结果如果出现192.134.2.3/24和192.134.2.3/32的情况,去掉192.134.2.3/32的结果,只保留192.134.2.3/24(注意192.134.2.3/24和192.134.2.3/32都是用来解释的,在实际的sql句中不要直接出现192.134.2.3/24和192.134.2.3/32)
时间: 2024-02-09 17:10:11 浏览: 124
重建WMSYS用户的WMSYS.WM_CONCAT函数的3个文件
可以使用如下SQL语句来实现:
```
SELECT CONCAT(ip1, '.', ip2, '.', ip3, '.', ip4, '/', sub_mask)
FROM ip
WHERE area NOT IN (115, 134)
GROUP BY ip1, ip2, ip3, ip4, sub_mask
HAVING CONCAT(ip1, '.', ip2, '.', ip3, '.', ip4, '/24') IN (
SELECT CONCAT(ip1, '.', ip2, '.', ip3, '.', ip4, '/24')
FROM ip
WHERE area NOT IN (115, 134)
GROUP BY ip1, ip2, ip3, ip4, sub_mask
HAVING COUNT(*) > 0
)
```
这个SQL语句中,我们使用了HAVING子句来过滤出现192.134.2.3/24和192.134.2.3/32的情况。首先,在子查询中,我们使用GROUP BY子句按照ip和子网掩码进行分组,并且只保留出现次数大于0的ip和子网掩码组合。然后,在主查询中,我们使用HAVING子句来筛选出子网掩码为24位的ip,这样就可以保留192.134.2.3/24并去掉192.134.2.3/32。
阅读全文