MySQL user defined variables
by vám v tomto případě pomohl.
Pokaždé, když uvidíte nový stav přiřadit 1
jako číslo řádku k odpovídajícímu řádku.
A pokud vidíte stejný stav, jaký jste viděli v předchozím řádku, přiřaďte místo toho zvýšené číslo řádku.
Tímto způsobem můžete konečně filtrovat záznamy, které mají row number = 1
pouze. Tyto konkrétní záznamy ve skutečnosti vykazují rozdíl ve srovnání s jejich bezprostředně předchozím řádkem
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