MySQL根据最新时间戳选择记录组

时间:2013-01-27 03:42:40

标签: mysql select timestamp

我有一个例程,每隔几个小时运行一次,在用于记录的表中创建几个条目。我需要做的是选择具有共同帐户ID的最新时间戳的所有记录。像这样:

SELECT * 
FROM TABLE_logs 
WHERE ACCOUNT_ID='12345' 
ORDER BY TIMESTAMP DESC 

我被困的地方是我不能说LIMIT 5或类似的东西,因为在每个例程间隔创建的记录数可能不同。因此,例如,当例程在上午10点运行时,它可能会在下午2点创建6个表条目和4个表条目。

有没有办法在不知道有多少记录的情况下选择最新记录的分组?

2 个答案:

答案 0 :(得分:2)

假设您的Table_Logs表中的多个条目可能具有相同的时间戳,并且您希望返回最近输入的每个条目,则需要使用GROUP BY

SELECT Field1, Field2, Max(TimeStamp) maxTime
FROM Table_Logs
WHERE Account_Id = '12345'
GROUP BY Field1, Field2

Field1等是您要在Table_Logs中返回的字段。

以下是一些示例SQL Fiddle

祝你好运。

答案 1 :(得分:0)

我认为你想要的是按时间戳分组。假设在上午10点输入的所有内容都具有相同的时间戳,而下午2点,同上,则会是这样的:

  SELECT timestamp, Field1, Field2
    FROM Table_Logs
GROUP BY timestamp

如果您的时间戳太精确,只需执行子字符串:

  SELECT LEFT(timestamp, 5), Field1, Field2
    FROM Table_Logs
GROUP BY LEFT(timestamp, 5)

假设时间戳是一个字符串(日志文件)。如果没有,你必须将其字符串化。