我正在努力编写一些 SQL 来提取新 IP 地址。这是我目前所拥有的,但它打印了所有内容,所以我认为它没有考虑日期部分。
SELECT DISTINCT dest_ip FROM ips WHERE date >= 2017-11-23;
我想要的是从 dest_ip 字段中查看所有给定日期的唯一 IP 地址,然后检查它们是否已经存在于 dest_ip 字段中,如果不存在,则返回它们。
这是当前的数据库:
+----+------------+----------+------------------+------------------+------+
| id | date | time | source_ip | dest_ip | port |
+----+------------+----------+------------------+------------------+------+
| 1 | 2017-11-11 | 00:21:21 | 192.168.1.1 | 177.43.234.23 | 443 |
| 2 | 2017-11-11 | 14:21:07 | 192.168.1.1 | 177.43.234.45 | 443 |
| 3 | 2017-11-13 | 14:21:09 | 192.168.1.1 | 177.43.234.78 | 443 |
| 4 | 2017-11-23 | 14:21:09 | 192.168.1.1 | 177.43.234.78 | 80 |
| 5 | 2017-11-23 | 14:22:13 | 192.168.1.1 | 177.43.234.78 | 53 |
| 6 | 2017-11-23 | 13:37:13 | 192.168.1.1 | 8.8.8.8 | 53 |
+----+------------+----------+------------------+------------------+------+
我预计运行查询时只会返回 ID 6,因为这是当天唯一的新 IP 地址。
最佳答案
你想要这样的东西吗?
SELECT dest_ip FROM ips WHERE
date >= 2017-11-23 and dest_ip NOT IN (SELECT dest_ip FROM ips WHERE
date < 2017-11-23 group by dest_ip)
group by dest_ip
关于mysql - sql 查找唯一值但只显示今天的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47463059/