最初のタイムスタンプに関係なく機能するはずのソリューションを次に示します。
SELECT id, ts FROM (
SELECT
IF(UNIX_TIMESTAMP(ts) = @prev OR UNIX_TIMESTAMP(ts) % 300 = @prev % 300, @mybool:=1, @mybool:=0) AS mybool,
IF(@mybool = 1, @prev:=UNIX_TIMESTAMP(ts), @prev:=@prev),
t.*
FROM Table2 t,
(SELECT @prev:=(SELECT MIN(UNIX_TIMESTAMP(ts)) FROM Table2 sqt), @mybool:=1) vars
ORDER BY id
) sq
WHERE mybool = 1;
sqlfiddleでライブで動作することを確認してください。
最初のタイムスタンプが「00:00」の場合、簡単に実行できます
SELECT *
FROM Table1
WHERE UNIX_TIMESTAMP(ts) % 300 = 0
ORDER BY id;
しかし、それを機能UNIX_TIMESTAMP()
させるには協力する必要があります。タイムスタンプは 32 ビット整数としてデータベースに格納されますが、整数表現で作業することを MySQL に伝える必要があります。