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

Mysql vælg række, når kolonneværdien ændres

MySQL user defined variables vil hjælpe dig i dette tilfælde.

Hver gang du ser en ny status, tildel 1 som rækkenummer til den tilsvarende række.

Og hvis du ser den samme status, som du så i den forrige række, så tildel i stedet et forhøjet rækkenummer.

På denne måde kan du endelig filtrere posterne med row number = 1 kun. Disse særlige poster viser faktisk forskel i forhold til deres umiddelbare forrige række

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. MySQL DISTINCT på en GROUP_CONCAT()

  2. Brug af Match and Against i MySQL og CodeIgniter

  3. Beregn 1 uge før sidste søndag og fra i dag til sidste søndag

  4. Flytning af data fra SQL Server til Oracle gentagne gange