考虑如下表:
CREATE TABLE records (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
eventOccured DATETIME NOT NULL,
eventType INT NOT NULL,
eventDescription VARCHAR(32)
)
我想从整个表中检索eventOccured
和eventType
字段,但如果两个或更多事件在一小时内发生,那么我只想要第一个。如果从N:00到N:59的所有内容被认为是同一小时,这将是简单的,但在这种情况下,事件类型“5”的12:15处的事件将被视为在11之后不到一小时发生: 45 eventType“5”,因此不应返回。这可以在没有存储过程的情况下在MySQL中完成吗?我可以写一个这样的程序,但我担心它会相当耗费资源,我很想知道MySQL是否具备开箱即用的能力。
答案 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
)