0

次のような表を考えてみましょう。

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

eventOccuredテーブル全体からフィールドとフィールドを取得しeventTypeたいのですが、1 時間以内に 2 つ以上のイベントが発生した場合は、最初のイベントのみが必要です。これは、N:00 から N:59 までのすべてが同じ時間と見なされる場合は単純ですが、この場合、eventType "5" の 12:15 のイベントは、11 から 1 時間以内に発生したと見なされます。 45 eventType "5" であるため、返されません。これは、ストアド プロシージャなしで MySQL で実行できますか? 私はそのような手順を書くことができましたが、かなりリソースを消費するのではないかと心配しており、MySQL にすぐに使える機能があるかどうか知りたいです。

4

1 に答える 1

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
                 ) 
于 2012-08-21T20:54:49.977 に答える