sql >> Databáze >  >> RDS >> Mysql

Mysql vyberte řádek při změně hodnoty sloupce

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


  1. Přidání statické předpony na zvyšující se číslo

  2. Uložené procedury jsou ve světě php/mysql no-go?

  3. Postgres:příkaz vakua nevyčistí mrtvé n-tice

  4. Použijte sphinx vs MySQL na dotaz bez textového vyhledávání