一小时一次来自MySQL

时间:2012-08-21 20:46:12

标签: mysql datetime

考虑如下表:

CREATE TABLE records (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    eventOccured DATETIME NOT NULL,
    eventType INT NOT NULL,
    eventDescription VARCHAR(32)
)

我想从整个表中检索eventOccuredeventType字段,但如果两个或更多事件在一小时内发生,那么我只想要第一个。如果从N:00到N:59的所有内容被认为是同一小时,这将是简单的,但在这种情况下,事件类型“5”的12:15处的事件将被视为在11之后不到一小时发生: 45 eventType“5”,因此不应返回。这可以在没有存储过程的情况下在MySQL中完成吗?我可以写一个这样的程序,但我担心它会相当耗费资源,我很想知道MySQL是否具备开箱即用的能力。

1 个答案:

答案 0 :(得分:1)

您所说的是您想要所有活动,在接下来的60分钟内没有其他活动。这个查询以mysql友好的方式执行此操作:

select *
from records r
where not exists (select 1
                  from records r2
                  where r2.eventOccured > r.eventOccured and
                        timestampdiff(minute, r.eventOccured, r2.eventOccured) < 60
                 )