Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana saya bisa melakukan grup yang berdekatan di MySQL?

Gunakan:

   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

Kuncinya di sini adalah menciptakan nilai artifisial yang memungkinkan pengelompokan.

Sebelumnya, koreksi jawaban Guffa:

   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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara masuk ke MySQL sebagai pengguna yang berbeda?

  2. Bagaimana saya menggunakan ON DUPLICATE KEY UPDATE dalam model CodeIgniter saya?

  3. Peringatan:#1265 Data terpotong untuk kolom 'pdd' di baris 1

  4. Bagaimana cara terbaik mendesain REST API dengan banyak filter?

  5. Bagaimana cara memeriksa apakah koneksi MySQL dienkripsi SSL?