MySql выбрать из списка самую последнюю дату подключения для каждого IP?

0

У меня есть БД, который сохраняет каждый логин на моем сервере в соответствии с 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)

Время в Datetime

что случилось?

Теги:
mysql-workbench
date

3 ответа

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
  • 0
    нет - это просто даст последнее соединение для всех IP. Я хочу последний для каждого IP
  • 0
    @ David12123 отредактировал мой ответ, проверьте пожалуйста
Показать ещё 2 комментария
0

Я должен что-то упустить. Почему это не простой SELECT с MAX и GROUP BY?

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

http://sqlfiddle.com/#!9/8f1e51/1

SELECT sc.IP, sc.Time
FROM sample.connection sc
LEFT JOIN sample.connection t
ON sc.ip = t.ip
   AND sc.time<t.time
WHERE t.ip IS NULL;
  • 0
    да, этот работает! Спасибо ,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню