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

Grup MySQL Berdasarkan Baris Berturut-turut

Inilah versi lain yang berfungsi dengan Variabel MySQL dan tidak memerlukan kedalaman 3 level bersarang. Yang pertama mengurutkan catatan berdasarkan postID dan Tanggal dan menetapkan mereka nomor urut per grup setiap kali nilai berubah di salah satu Post ID, Jenis dan/atau tindakan. Dari itu, Ini adalah grup sederhana dengan... tidak membandingkan catatan versi T ke T2 hingga T3... bagaimana jika Anda menginginkan 4 atau 5 kriteria... apakah Anda harus membuat lebih banyak entri lagi?, atau hanya menambahkan 2 lagi @ variabel sql untuk uji perbandingan...

Panggilan Anda yang lebih efisien...

select
      PreQuery.postID,
      PreQuery.PostType,
      PreQuery.Target,
      PreQuery.Action,
      PreQuery.Title,
      min( PreQuery.Date ) as FirstActionDate,
      max( PreQuery.Date ) as LastActionDate,
      count(*) as ActionEntries,
      group_concat( PreQuery.content ) as Content
   from
      ( select
              t.*,
              @lastSeq := if( t.action = @lastAction
                          AND t.postID = @lastPostID
                          AND t.postType = @lastPostType, @lastSeq, @lastSeq +1 ) as ActionSeq,
              @lastAction := t.action,
              @lastPostID := t.postID,
              @lastPostType := t.PostType
           from
              t,
              ( select @lastAction := ' ',
                       @lastPostID := 0,
                       @lastPostType := ' ',
                       @lastSeq := 0 ) sqlVars
           order by
              t.postid,
              t.date ) PreQuery
   group by
      PreQuery.postID,
      PreQuery.ActionSeq,
      PreQuery.PostType,
      PreQuery.Action    

Ini tautan saya ke contoh SQLFiddle

Untuk judul, Anda mungkin ingin menyesuaikan baris...

group_concat( PreQuery.Title berbeda) sebagai Judul,

Setidaknya ini akan memberikan judul DISTINCT yang digabungkan... jauh lebih sulit untuk dibiarkan tanpa menyarangkan seluruh kueri ini satu tingkat lagi dengan memiliki tanggal kueri maksimal dan elemen lain untuk mendapatkan satu judul yang terkait dengan tanggal maksimal per semua kriteria.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Workbench - Cara menyinkronkan Diagram EER

  2. MySQL ERROR 1005 (HY000):Tidak dapat membuat tabel 'foo.#sql-12c_4' (errno:150)

  3. Cara Mendapatkan Pengguna Baru Per Hari di MySQL

  4. PHP :Fungsi tidak terdefinisi mysql_connect()

  5. Permintaan untuk mengonversi dari datetime ke tanggal mysql