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

Mysql group_concat membatasi baris dalam pengelompokan

MySQL tidak membuat kueri semacam ini mudah, tetapi satu (diakui tidak terlalu cantik) solusi adalah dengan menggunakan variabel untuk memberikan setiap baris nomor urut per tujuan dan hanya mengelompokkan dengan bilangan bulat nomor baris dibagi 2 untuk mendapatkan dua nomor di setiap kelompok;

SELECT dest, GROUP_CONCAT(port ORDER BY rank) ports
FROM (
  SELECT dest, port, ( 
      CASE dest WHEN @curDest 
                THEN @curRow := @curRow + 1 
                ELSE @curRow := 1 AND @curDest := dest END) rank
  FROM tb_port a
  JOIN tb_rule c ON a.id = c.id_port
  JOIN tb_dest b ON b.id = c.id_dest, 
    (SELECT @curRow := 0, @curDest := '') r
  ORDER BY dest
) z
GROUP BY FLOOR(rank/2),dest
ORDER BY dest, MIN(rank)

SQLfiddle untuk diuji .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. memuat data file lokal ERROR 2 file tidak ditemukan

  2. HAPUS semua di mana batasan kunci asing MySQL tidak gagal

  3. Membuat JSON hierarkis dari hasil MySQL dan PHP untuk pohon D3.js?

  4. Pesan kesalahan MYSQL DBDump

  5. Masalah stopword teks lengkap MySQL