我有下表:
| **IP** | **PORT** | **SERVICE** | **VERSION** |
|:-------:|:----:|:-------:|:-------:|
| 1.2.3.4 | 80 | HTTP | 1.1 |
| 1.2.3.4 | 443 | HTTP | 1.2 |
| 1.2.3.4 | 25 | SMTP | a |
| 2.3.4.5 | 80 | HTTP | 1.2 |
| 2.3.4.5 | 443 | HTTP | 1.2 |
| 2.3.4.5 | 25 | SMTP | a |
| 3.4.5.6 | 25 | SMTP | b |
| 3.4.5.6 | 443 | HTTP | 1.2 |
| 0.0.0.1 | 25 | SMTP | b |
| 0.0.0.2 | 443 | HTTP | 1.2 |
我希望通过某些IP之间的端口,服务和版本获得不同服务的列表,例如,IP 1.2.3.4,2.3.4.5和3.4.5.6的结果应类似于以下内容:由于这些IP上的其他服务是相同的端口,服务和版本。
IP 1.2.3.4,2.3.4.5和3.4.5.6的不同服务:
| IP | PORT | SERVICE | VERSION |
|:-------:|:----:|:-------:|:-------:|
| 1.2.3.4 | 80 | HTTP | 1.1 |
| 1.2.3.4 | 25 | SMTP | a |
| 2.3.4.5 | 80 | HTTP | 1.2 |
| 2.3.4.5 | 25 | SMTP | a |
| 3.4.5.6 | 25 | SMTP | b |
不确定如何在查询中获取它们。
提前致谢
答案 0 :(得分:0)
嗯。如果我理解正确,您更关心 ports 而非服务。如果是这样的话:
select t.*
from t
where t.ip in ('1.2.3.4', '2.3.4.5', '3.4.5.6') and
t.port in (select t2.port from t t2 where t2.ip in ('1.2.3.4', '2.3.4.5', '3.4.5.6'));
答案 1 :(得分:0)
如果我理解正确,则要求按ip和服务进行分组。
select t.*
from t where t.ip in ('1.2.3.4', '2.3.4.5', '3.4.5.6')
group by ip,service;
答案 2 :(得分:-1)
您可以尝试在IP和SERVICE列上应用组。