Mysqlの複製: タイムスタンプの差が x 未満の行を検索する
次のようなテーブルがあります。
Field Type
id int(11)
user varchar(64)
date int(11)
key int(11)
日付はタイムスタンプ形式です。連続する行のタイムスタンプの差が x より小さいすべての行を見つける方法を探しています。出来ますか?
Mysqlの複製: タイムスタンプの差が x 未満の行を検索する
次のようなテーブルがあります。
Field Type
id int(11)
user varchar(64)
date int(11)
key int(11)
日付はタイムスタンプ形式です。連続する行のタイムスタンプの差が x より小さいすべての行を見つける方法を探しています。出来ますか?
タイムスタンプが を意味すると仮定すると、これは可能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 はウィンドウ関数をサポートしていません。