MySQL:Select 行,最大列值和相应的日期时间由另一列分组
MySQL: Select rows with max column value and corresponded datetime grouped by another column
我的table是
IP HITS DATETIME
ip1 90 2016-09-10 01:15:37
ip2 13 2016-09-10 04:16:41
ip3 14 2016-09-10 05:17:41
ip2 12 2016-09-10 07:18:42
ip3 45 2016-09-10 09:19:42
ip1 88 2016-09-10 13:20:43
ip2 15 2016-09-10 15:21:43
ip3 26 2016-09-10 18:22:44
结果是
IP HITS DATETIME
ip1 90 2016-09-10 01:15:37
ip2 15 2016-09-10 15:21:43
ip3 45 2016-09-10 09:19:42
如有任何建议,我们将不胜感激。
这是使用 Correlated sub-query
的一种方法
select * from yourtable a
where hits = (select max(hits) from yourtable b where a.IP = b.IP)
另一种使用方式JOIN
SELECT a.IP,a.HITS,a.DATETIME
FROM yourtable a
JOIN (SELECT Max(hits) AS max_hits,
ip
FROM yourtable
GROUP BY ip) b
ON a.ip = b.ip
AND b.max_hits = a.hits
我的table是
IP HITS DATETIME
ip1 90 2016-09-10 01:15:37
ip2 13 2016-09-10 04:16:41
ip3 14 2016-09-10 05:17:41
ip2 12 2016-09-10 07:18:42
ip3 45 2016-09-10 09:19:42
ip1 88 2016-09-10 13:20:43
ip2 15 2016-09-10 15:21:43
ip3 26 2016-09-10 18:22:44
结果是
IP HITS DATETIME
ip1 90 2016-09-10 01:15:37
ip2 15 2016-09-10 15:21:43
ip3 45 2016-09-10 09:19:42
如有任何建议,我们将不胜感激。
这是使用 Correlated sub-query
select * from yourtable a
where hits = (select max(hits) from yourtable b where a.IP = b.IP)
另一种使用方式JOIN
SELECT a.IP,a.HITS,a.DATETIME
FROM yourtable a
JOIN (SELECT Max(hits) AS max_hits,
ip
FROM yourtable
GROUP BY ip) b
ON a.ip = b.ip
AND b.max_hits = a.hits