MySQL user defined variables
pomoże ci w tym przypadku.
Za każdym razem, gdy zobaczysz nowy status, przypisz 1
jako numer wiersza do odpowiedniego wiersza.
A jeśli widzisz ten sam status, który widziałeś w poprzednim wierszu, zamiast tego przypisz zwiększony numer wiersza.
W ten sposób możesz wreszcie filtrować rekordy mające row number = 1
tylko. Te konkretne rekordy faktycznie wykazują różnicę w porównaniu z ich bezpośrednim poprzednim wierszem
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