MySQL user defined variables
vous aiderait dans ce cas.
Chaque fois que vous voyez un nouveau statut, attribuez 1
comme numéro de ligne à la ligne correspondante.
Et si vous voyez le même statut que celui que vous avez vu dans la ligne précédente, attribuez plutôt un numéro de ligne incrémenté.
De cette façon, vous pouvez enfin filtrer les enregistrements ayant row number = 1
seul. Ces enregistrements particuliers montrent en fait une différence par rapport à leur ligne précédente immédiate
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