sql >> Databasteknik >  >> RDS >> Mysql

Mysql välj rad när kolumnvärdet ändrades

MySQL user defined variables skulle hjälpa dig i det här fallet.

Tilldela 1 varje gång du ser en ny status som radnummer till motsvarande rad.

Och om du ser samma status som du såg i föregående rad, tilldela istället ett ökat radnummer.

På så sätt kan du äntligen filtrera posterna med row number = 1 endast. Dessa särskilda poster visar faktiskt skillnad jämfört med deras omedelbara föregående rad

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. VARNING:Office Version 2204 kan skada Access-applikationer

  2. mysql error 2049 anslutning med gammal (pre-4-1-1) autentisering från mac

  3. Hur framtvingar jag uppsättningsliknande unikhet mellan flera kolumner?

  4. Ansluter till MySQL via SSL med PHP