4

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

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

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

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

4

2 回答 2

3

假设您的意思是 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可供试用。

祝你好运。

于 2013-01-27T04:36:13.500 回答
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)

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

于 2013-01-27T04:47:38.077 回答