テーブルに自己参加することができます。このような場合は、次のように機能します。
SELECT
*
FROM
yourTable a
INNER JOIN yourTable b ON a.ID = b.ID + 1
WHERE TIMESTAMPDIFF(second, a.timestamp, b.timestamp) > 60
ただし、ID列にギャップがあると、これは醜くなる可能性があります。特に、*ロットがある場合、(パフォーマンスの観点から(テーブルに適切なインデックスがない場合))醜くなる可能性があります。 データの。
したがって、変数を使用してもう少し高度なクエリを使用することをお勧めします。テーブルをそれ自体に結合する必要がない場合、これは通常、かなり高速に実行されます。
SELECT * FROM (
SELECT
yt.*,
TIMESTAMPDIFF(second, @prevTS, `timestamp`) AS timedifference,
@prevTS:=yt.`timestamp`
FROM
yourTable yt
, (SELECT @prevTS:=(SELECT MIN(`timestamp`) FROM yourTable)) vars
ORDER BY ID
)subquery_alias
WHERE timedifference > 65
- sqlfiddle でライブで動作することを確認してください
このクエリをさらに改善して、時差が大きすぎる2つの行を表示することは、問題にはなりません:)深刻な問題が発生した場合は、遠慮なく質問してください。