我有一个数据库,可以根据用户IP将每个登录名保存到我的服务器上
2018-08-07 00:00:00, 10.1.1.1
2018-08-06 07:00:00, 10.1.1.1
2018-08-05 00:22:00, 10.1.1.1
2018-08-07 00:00:00, 10.1.1.5
2018-08-05 00:00:00, 10.1.1.5
以此类推.....
我想知道根据每个IP最新的连接时间 所以最后我看到了:
2018-08-07 00:00:00, 10.1.1.5
2018-08-07 00:00:00, 10.1.1.1
我尝试过这个:
SELECT IP,Time
FROM sample.connection
WHERE Time in (SELECT MAX(Time) from sample.connection GROUP BY IP);
但是它不起作用-我看不到所有IP(只有其中一些)的最新连接
我的IP是varcahr(45)
时间是日期时间
怎么了?
答案 0 :(得分:0)
尝试以下查询,您需要一个子查询并加入:
SELECT sc.IP,sc.Time
FROM sample.connection sc
INNER JOIN
(SELECT IP, MAX(Time) AS lstTime
FROM sample.connection
GROUP BY IP) t2 ON sc.Time = t2.lstTime AND sc.IP = t2.IP
http://sqlfiddle.com/#!9/8f1e51/2
IP Time
--------------------------------
10.1.1.1 2018-08-07 00:00:00
10.1.1.5 2018-08-07 00:00:00
答案 1 :(得分:0)
http://sqlfiddle.com/#!9/8f1e51/1
CustomFilter
答案 2 :(得分:0)
我一定很想念东西。为什么这不是具有MAX和GROUP BY的简单SELECT?
SELECT IP, MAX(Time) as Time FROM conn GROUP BY IP;