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

Penomoran GROUP_CONCAT

Bertahun-tahun kemudian, kita harus meninggalkan variabel yang bermutasi di dalam select pernyataan, karena sejak MySQL 8 kita dapat menggunakan cara standar, dengan fungsi jendela:

with base as (
      select   dep, 
               empnam,
               count(*) over (partition by dep order by empnam) num
      from     t)
select   dep,
         group_concat(concat(num, '.', empnam) separator ', ') emps
from     base
group by dep

Lihat db-fiddle

Jawaban asli (2016)

Anda dapat melakukan ini di sisi aplikasi, tetapi di MySQL 5.7 dimungkinkan. Dalam kueri berikut, saya menganggap Anda mengelompokkan nama berdasarkan sesuatu, misalnya departemen mereka (saya menyebutnya dep ). Ini untuk menggambarkan bahwa penghitung dimulai dari 1 untuk setiap grup baru.

select   dep, 
         group_concat( 
             concat(@i := if (@grp = dep, @i + 1, if(@grp := dep,1,1)), '.', empnam) 
             separator ', ') emps
from     t,
         (select @i := 0, @grp := '') init
group by dep;

Lihat SQL fiddle atau db-fiddle .

Pastikan untuk memasukkan nama tabel Anda di from klausa, dan untuk menggunakan bidang aktual yang ingin Anda kelompokkan. Jika Anda memiliki beberapa bidang untuk dikelompokkan, ekspresi ditetapkan ke @i akan perlu berubah. Misalnya, Anda dapat menggabungkan nilai yang mendefinisikan grup.

Dengan menggunakan pemisah dua karakter, Anda memastikan ada spasi di antara setiap nama.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. memasukkan ke dalam database mysql adalah bagian dari hasil Rhône di Rh

  2. Typo3 V6:Bagaimana cara membuat wadah elemen konten? (tanpa televisi)

  3. Python mysql (menggunakan pymysql) terhubung kembali secara otomatis

  4. Kesalahan (dekat ON pada posisi 25) saat mengimpor Tabel untuk WORDPRESS (Kesalahan kunci asing)

  5. Lembar Cheat Perintah SQL – Cara Belajar SQL dalam 10 Menit