0

Mysqlの複製: タイムスタンプの差が x 未満の行を検索する

次のようなテーブルがあります。

Field       Type
id              int(11)
user            varchar(64)
date        int(11)
key             int(11)

日付はタイムスタンプ形式です。連続する行のタイムスタンプの差が x より小さいすべての行を見つける方法を探しています。出来ますか?

4

1 に答える 1

3

タイムスタンプが を意味すると仮定すると、これは可能dateです。相関サブクエリを使用して次のdate値を取得するバージョンを次に示します。

select t.*
from (select t.*,
             (select date
              from yourtable t2
              where t2.date > t.date
              order by t2.date
              limit 1
             ) as NextDate
      from yourtable t
     ) t
where <difference calculation goes here>;

編集:

上記は標準SQLです。MySQL では、変数を使用してこれを行うこともできます。

select t.*
from (select t.*, @nextdate as nextdate, @nextdate := date
      from yourtable t
      order by date desc
     ) t
where <difference calculation goes here>;

このアプローチには 2 つの問題があります。まず、変数を使用するには、結果セットの順次処理が必要です (MySQL では大したことではありません。とにかくこれが起こると思います)。さらに重要なことに、 での評価の順序はselect保証されません。つまり、これはおそらく機能しますが、機能する保証はありません。

ちなみに、他の多くのデータベースは、lead()これを行う「正しい」方法である機能をサポートしています。残念ながら、MySQL はウィンドウ関数をサポートしていません。

于 2013-07-05T12:59:17.290 に答える