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

finde den sidste række i træk

SELECT a.id, a.readVal 
FROM consecutiv a
WHERE a.readVal != 
   (SELECT b.readVal 
    FROM consecutiv b 
    WHERE b.id > a.id 
    ORDER BY id ASC
    LIMIT 1)
ORDER BY a.id;
 

returnerer:

id | readval ----+--------- 3 | 2 8 | 3 9 | 4 10 | 5 12 | 6 14 | 2

for det tilfælde, at den allersidste række også er nødvendig:

SELECT c.id, c.readVal, c.nextReadVal
FROM 
  (SELECT 
   a.id, a.readVal, 
     (SELECT b.readVal
      FROM consecutiv b 
      WHERE b.id > a.id 
      ORDER BY id ASC 
      LIMIT 1) AS nextReadVal
   FROM consecutiv a) AS c
WHERE readVal != nextReadVal OR nextReadVal IS NULL
ORDER BY c.id;
 

returnerer:

id | readval | nextreadval ----+---------+------------- 3 | 2 | 3 8 | 3 | 4 9 | 4 | 5 10 | 5 | 6 12 | 6 | 2 14 | 2 | 6 15 | 6 |


  1. hvordan man sorterer varchar numeriske kolonner efter DESC eller ASC?

  2. Indsæt en persisk tekst i mysql-tabel

  3. mysql brugertilmelding tæller mellem grupper

  4. Returner en liste over servertriggerhændelser i SQL Server