首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql查找唯一值,但只显示今天的日期。

sql查找唯一值,但只显示今天的日期。
EN

Stack Overflow用户
提问于 2017-11-23 20:46:38
回答 2查看 36关注 0票数 1

我正在努力编写一些SQL来提取新的IP地址。这是我到目前为止所拥有的,但它打印的所有东西,所以我认为它没有考虑到日期部分。

代码语言:javascript
复制
SELECT DISTINCT dest_ip FROM ips WHERE date >= 2017-11-23;

我想要的是从dest_ip字段查看所有给定的日期唯一的IP地址,然后检查它们是否已经存在于dest_ip字段中,如果不存在,则返回它们。

以下是当前的数据库:

代码语言:javascript
复制
+----+------------+----------+------------------+------------------+------+
| 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地址。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-23 20:59:05

你想要那样的东西吗?

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2017-11-23 21:01:56

如果您可以提供一个您想要的输出的示例,但是根据您已经说过的内容和您编写的SQL查询,您将得到两个IP地址,这将是有帮助的。

之所以如此,是因为在WHERE子句中,您说要查找所有等于或大于2017年11月23日的日期。您必须在where子句中包含date列才能得到第6行。

代码语言:javascript
复制
create table #tbl1 (
    id int
    ,[date] date
    ,[time] time
    ,source_ip nvarchar(20)
    ,dest_ip nvarchar(20)
    ,[port] int
);

insert into #tbl1
values
    (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)
;


select
    distinct(dest_ip) as ip
from #tbl1
where
    [date] >= '20171123'
    and [time] < '14:00'
;

drop table #tbl1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47463059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档