sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag göra en sammanhängande grupp i MySQL?

Använd:

   SELECT MIN(t.id) 'mi', 
          t.val, 
          COUNT(*)
     FROM (SELECT x.id, 
                 x.val, 
                 CASE 
                   WHEN xt.val IS NULL OR xt.val != x.val THEN 
                     @rownum := @rownum+1 
                   ELSE 
                     @rownum 
                 END AS grp
            FROM TABLE x
            JOIN (SELECT @rownum := 0) r
       LEFT JOIN (SELECT t.id +1 'id',
                         t.val
                    FROM TABLE t) xt ON xt.id = x.id) t
 GROUP BY t.val, t.grp
 ORDER BY mi

Nyckeln här var att skapa ett konstgjort värde som skulle tillåta gruppering.

Tidigare korrigerade Guffas svar:

   SELECT t.id, t.val
     FROM TABLE t
LEFT JOIN TABLE t2 on t2.id + 1 = t.id
    WHERE t2.val IS NULL 
       OR t.val <> t2.val


  1. Vad returnerar en framgångsrik MySQL DELETE? Hur kontrollerar jag om DELETE lyckades?

  2. sql server underfråga med en kommaseparerad resultatuppsättning

  3. Visa nästa evenemangsdatum

  4. Hur hämtar man data från mysql-databasen och visualiserar med D3.JS?