MySQL user defined variables
この場合に役立ちます。
新しいステータスが表示されるたびに、1
を割り当てます 対応する行の行番号として。
また、前の行と同じステータスが表示された場合は、代わりに増分行番号を割り当ててください。
このようにして、row number = 1
のレコードを最終的にフィルタリングできます。 それだけ。これらの特定のレコードは、直前の行と比較して実際に違いを示しています
SELECT
*
FROM
(
SELECT
*,
IF(@prevStatus = YT.status_1, @rn := @rn + 1,
IF(@prevStatus := YT.status_1, @rn := 1, @rn := 1)
) AS rn
FROM your_table YT
CROSS JOIN
(
SELECT @prevStatus := -1, @rn := 1
) AS var
ORDER BY YT.ID
) AS t
WHERE t.rn = 1
ORDER BY t.ID