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

Memilih grup catatan berurutan dengan atribut umum?

Bisakah Anda mencoba ini? Anda dapat menguji di sini http://www.sqlfiddle.com/#!2/57967 /12 .

Select grp_new, group_concat(ord)
From (
   Select ord, if(grp = @prev, @seq, @seq := @seq + 1) as seq,
    if(grp = @prev, grp, @prev := grp) as grp_new
  From tab, (SELECT @seq := 0, @prev := '') AS init
  Order by ord
) x
Group by grp_new, seq;

Ide kuncinya adalah menghasilkan seq yang sama untuk grup berurutan yang sama sebagai berikut.

Select
   ord, if(grp = @prev, @seq, @seq := @seq + 1) as seq,
    if(grp = @prev, grp, @prev := grp) as grp_new
From tab, (SELECT @seq := 0, @prev := '') AS init
Order by ord

lalu akhirnya mengelompokkan GROUP BY grp, seq yang dapat membedakan setiap grup yang berurutan meskipun mereka memiliki grp yang sama .

EDIT:Untuk mendapatkan hasil persis seperti contoh:

Select grp_new, group_concat(ord order by ord)
From (
  Select ord, if(grp = @prev, @seq, @seq := @seq + 1) as seq,
    if(grp = @prev, grp, @prev := grp) as grp_new
  From tab, (SELECT @seq := 0, @prev := '') AS init
  Order by ord
) x
Group by seq


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. persimpangan banyak-ke-banyak dan banyak-ke-banyak

  2. Kesalahan saat mengganti nama kolom di MySQL

  3. Mengelompokkan record dari while loop | PHP

  4. Perbaiki Peringatan MySQL 1287:'BINARY expr' tidak digunakan lagi dan akan dihapus dalam rilis mendatang

  5. Bagaimana cara menyinkronkan tabel tertentu dengan nama dan nama database yang sama antara dua jaringan independen yang berbeda di mana replikasi tidak dimungkinkan?