Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL seleziona la riga quando il valore della colonna è cambiato

MySQL user defined variables ti aiuterebbe in questo caso.

Ogni volta che vedi un nuovo stato, assegna 1 come numero di riga alla riga corrispondente.

E se vedi lo stesso stato che hai visto nella riga precedente, assegna invece un numero di riga incrementato.

In questo modo puoi finalmente filtrare i record con row number = 1 solo. Questi record particolari stanno effettivamente mostrando differenze rispetto alla riga precedente immediata

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