sql - SQL query match specific IP address
问题描述
I have a table with data like this:
IP ACCESS_DATE
----------------------------
192.168.1.5 06/22/2018
192.168.1.5 06/20/2018
192.168.1.5 06/18/2018
192.168.1.7 06/22/2018
192.168.1.7 05/01/2018
192.168.1.212 06/22/2018
10.10.10.1 06/22/2018
This is SQL Server, so no inet possible...
My IP
column is defined as varchar(20)
.
I have a query that lists the most recent date associated to all IP addresses in that table, and I believe it works just fine. However, I can't seem to have it return the result for a specific IP.
This is the query that works:
SELECT
t.IP, t.ACCESSS_DATE
FROM
(SELECT
IP, MAX(ACCESSS_DATE) AS ACCESSS_DATE
FROM
USER_ACCESS_HISTORY
GROUP BY
IP) x
JOIN
USER_ACCESS_HISTORY t ON x.IP = t.ip
AND x.ACCESSS_DATE = t.ACCESSS_DATE
but if I do this:
SELECT
t.IP, t.ACCESSS_DATE
FROM
(SELECT
IP, MAX(ACCESSS_DATE) AS ACCESSS_DATE
FROM
USER_ACCESS_HISTORY
GROUP BY IP) x
JOIN
USER_ACCESS_HISTORY t ON x.IP = '192.168.1.5'
AND x.ACCESSS_DATE = t.ACCESSS_DATE
it returns
192.168.1.5 06/22/2018
192.168.1.7 06/22/2018
192.168.1.212 06/22/2018
Any help would be appreciated!
解决方案
改变这个:
ON x.IP =t.ip
对此:
ON x.IP ='192.168.1.5'
破坏了USER_ACCESS_HISTORY
表和子查询之间的查询关系,因此不再有任何关联。你要这个:
SELECT t.IP, t.ACCESSS_DATE
FROM(
SELECT IP,MAX(ACCESSS_DATE) AS ACCESSS_DATE
FROM USER_ACCESS_HISTORY
GROUP BY IP
) x
JOIN USER_ACCESS_HISTORY t ON x.IP =t.ip
AND x.ACCESSS_DATE = t.ACCESSS_DATE
WHERE x.IP ='192.168.1.5'
这会保留关系并将数据过滤到所需的 IP。
即使这看起来比您需要的要复杂得多(只需子查询就足够了),但我假设我们只看到查询的精简版本来说明问题。我确实提出来以防万一您可以像这样减少查询:
SELECT IP, MAX(ACCESSS_DATE) AS ACCESSS_DATE
FROM USER_ACCESS_HISTORY
WHERE IP = '192.168.1.5'
GROUP BY IP
推荐阅读
- django - django 文档在这里错了吗?
- java - 我正在尝试使用 Buffered Reader 读取文件。我怎样才能给出文件的相对路径?
- gradle - 使用 Java8 运行 Gradle 并使用 fork 编译 Java13
- python - 使用 if 循环比较两个数组
- java - Android Studio Java 中的 SQLite 更新数据库行
- c++ - 错误 test.exe 中 0x76C9FD62 处的未处理异常:Microsoft C++ 异常:内存位置 0x006FF870 处的 std::out_of_range。发生了
- javascript - 如何使用 Javascript 简单地遍历数组?
- javascript - jQuery pligin 中的 Javascript mousehweel 函数
- node.js - 如何在弹性搜索中插入多个 JSON 文档
- android - 如何在 kotlin 的 android 共享首选项中存储 2D 数组?