MySQL user defined variables
sẽ giúp bạn trong trường hợp này.
Mỗi khi bạn thấy một trạng thái mới, hãy gán 1
dưới dạng số hàng cho hàng tương ứng.
Và nếu bạn thấy cùng một trạng thái mà bạn đã thấy ở hàng trước đó thì hãy chỉ định một số hàng tăng dần để thay thế.
Bằng cách này, cuối cùng bạn có thể lọc các bản ghi có row number = 1
chỉ có. Các bản ghi cụ thể này thực sự cho thấy sự khác biệt so với hàng trước đó của chúng
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