MySql从列表中选择每个IP的最新连接日期?

时间:2018-08-07 13:37:38

标签: mysql date mysql-workbench

我有一个数据库,可以根据用户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)

时间是日期时间

怎么了?

3 个答案:

答案 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)

答案 2 :(得分:0)

我一定很想念东西。为什么这不是具有MAX和GROUP BY的简单SELECT?

SELECT IP, MAX(Time) as Time FROM conn GROUP BY IP;