MySQL:如何按小时分组数据并获取最新的小时数

tra*_*lix 9 mysql sql grouping

我正在尝试进行一个查询来获取每个数据,hour而不是按小时而不是正常组我想缩小它并且只得到latest小时 - 这意味着该小时内的最新数据.如下图所示,我想得到的是带红色框的行.如果你会发现,第一个红色行10:59:51,这意味着它是唯一的行内的10:00:0010:59:59.对于12:00我希望得到的其他行,12:37:14因为它是该小时范围的最新或最新.

在此输入图像描述

我有一个简单的查询,hour使用HOUR()like 来分组数据:

SELECT userid, username, date_created
FROM user_accounts 
WHERE date_created >= '2009-10-27 00:00:00' AND date_created < '2009-10-27 23:59:59'
GROUP BY HOUR(date_created)
Run Code Online (Sandbox Code Playgroud)

查询,但是,仅通过分组小时它1012返回ID 2425-但我需要的是ID 2428.有任何想法吗?

diE*_*cho 19

尝试

SELECT  f.*
FROM    (
        SELECT  MAX(UNIX_TIMESTAMP(date_created)) AS mts
        FROM  user_accounts 
        GROUP BY HOUR(date_created)
        ) s
JOIN    user_accounts  f
ON      UNIX_TIMESTAMP(date_created) = s.mts
WHERE  DATE(date_created) = '2009-10-27'
Run Code Online (Sandbox Code Playgroud)


Cod*_*ler 5

也许这会奏效吗?

SELECT userid, username, date_created
FROM user_accounts 
WHERE userid IN (
  SELECT MAX(userid)
  FROM user_accounts 
  WHERE date_created >= '2009-10-27 00:00:00' AND date_created < '2009-10-27 23:59:59'
  GROUP BY HOUR(date_created)
)
Run Code Online (Sandbox Code Playgroud)