Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mysql wybierz wiersz po zmianie wartości kolumny

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd SQL #1071 — Określony klucz był za długi; maksymalna długość klucza to 767 bajtów

  2. Zapytanie MySQL do grupowania danych w różne zakresy

  3. CI - pokaż błąd bazy danych lub błąd

  4. Jak mogę wyświetlić czas zapytania w Perl, DBI?

  5. Jak wstawić post_id do bazy danych mysql?