GROUP_CONCAT dalam MySQL
Dalam database SQL, kita sering perlu memanipulasi dan mengelola data. MySQL, salah satu sistem manajemen database paling populer, menyediakan berbagai fungsi untuk membantu kita melakukan tugas-tugas ini dengan efisien. Salah satu fungsi tersebut adalah fungsi GROUP_CONCAT
.
Fungsi GROUP_CONCAT
dalam MySQL digunakan untuk menggabungkan data dari beberapa baris menjadi satu bidang. Ini sangat berguna dalam situasi output nilai ganda di mana pernyataan group by tradisional akan menghasilkan beberapa baris data untuk setiap grup.
Sintaksis GROUP_CONCAT
Berikut adalah sintaks dasar dari fungsi GROUP_CONCAT
:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
DISTINCT
: Digunakan untuk menghapus entri duplikat.expr
: Ini adalah kolom atau data yang ingin Anda gabungkan.ORDER
BY: Digunakan untuk mengurutkan data yang digabungkan.SEPARATOR
: Memungkinkan Anda untuk menambahkan pemisah antara data yang digabungkan. Pemisah default adalah koma (,
).
Contoh-contoh GROUP_CONCAT
Contoh Sederhana GROUP_CONCAT
Untuk contoh sederhana, pertimbangkan tabel bernama Students
dengan data berikut:
ID | Name | Subject |
---|---|---|
1 | Alice | Math |
2 | Alice | Science |
3 | Bob | Math |
4 | Bob | English |
Jika kita ingin mencantumkan semua mata pelajaran untuk setiap siswa, kita dapat menggunakan GROUP_CONCAT
sebagai berikut:
SELECT Name, GROUP_CONCAT(Subject)
FROM Students
GROUP BY Name;
Name | GROUP_CONCAT(Subject) |
---|---|
Alice | Math,Science |
Bob | Math,English |
GROUP_CONCAT dengan DISTINCT
Pertimbangkan tabel Orders
dengan data berikut:
OrderID | Customer | Product |
---|---|---|
1 | Alice | Apple |
2 | Alice | Banana |
3 | Alice | Apple |
4 | Bob | Cherry |
Kita dapat mencantumkan produk yang berbeda untuk setiap pelanggan menggunakan GROUP_CONCAT
dengan DISTINCT
sebagai berikut:
SELECT Customer, GROUP_CONCAT(DISTINCT Product)
FROM Orders
GROUP BY Customer;
Customer | GROUP_CONCAT(DISTINCT Product) |
---|---|
Alice | Apple,Banana |
Bob | Cherry |
GROUP_CONCAT dengan ORDER BY
Jika kita ingin mengurutkan daftar yang digabungkan, kita dapat melakukannya dengan ORDER BY
. Dengan menggunakan tabel Orders
yang sama seperti di atas, kita dapat mengurutkan produk secara alfabetis sebagai berikut:
SELECT Customer, GROUP_CONCAT(Product ORDER BY Product ASC)
FROM Orders
GROUP BY Customer;
Customer | GROUP_CONCAT(Product ORDER BY Product ASC) |
---|---|
Alice | Apple,Apple,Banana |
Bob | Cherry |
GROUP_CONCAT dengan SEPARATOR
Jika kita ingin menggunakan pemisah selain koma, kita dapat menggunakan SEPARATOR
. Misalnya, jika kita ingin memisahkan produk dengan titik koma:
SELECT Customer, GROUP_CONCAT(Product SEPARATOR ';')
FROM Orders
GROUP BY Customer;
Customer | GROUP_CONCAT(Product SEPARATOR ';') |
---|---|
Alice | Apple;Banana;Apple |
Bob | Cherry |
Referensi