Cara menggunakan fungsi GROUP_CONCAT dalam MySQL untuk menggabungkan berbilang baris data ke dalam rentetan

WBOY
Lepaskan: 2023-07-12 19:37:48
asal
1523 orang telah melayarinya

Cara menggunakan fungsi GROUP_CONCAT dalam MySQL untuk menggabungkan berbilang baris data ke dalam rentetan

Dalam pangkalan data MySQL, kadangkala kita perlu menggabungkan berbilang baris data ke dalam rentetan. Ini sering berlaku apabila berbilang nilai lajur perlu digabungkan menjadi satu rentetan, dipisahkan dengan koma atau pembatas lain. MySQL menyediakan fungsi yang sangat berguna GROUP_CONCAT untuk memenuhi keperluan ini. Sintaks fungsi

GROUP_CONCAT adalah seperti berikut:

GROUP_CONCAT([DISTINCT] expr [, expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [, col_name ...]]
             [SEPARATOR str_val])
Salin selepas log masuk

Antaranya, DISTINCT adalah pilihan dan digunakan untuk deduplikasi ialah nama lajur atau ungkapan yang perlu digabungkan dengan klausa ORDER BY tentukan hasil gabungan; SEPARATOR adalah pilihan dan digunakan untuk menentukan pemisah, yang lalai kepada koma.

Berikut ialah contoh untuk menunjukkan cara menggunakan fungsi GROUP_CONCAT.

Katakan kita mempunyai buah meja, mengandungi dua medan: id dan nama. Antaranya, lajur nama mengandungi berbilang baris data Kami ingin menggabungkan nama dengan ID yang sama ke dalam rentetan dan memisahkannya dengan koma. Struktur dan data jadual adalah seperti berikut:

CREATE TABLE fruit (
    id INT,
    name VARCHAR(50)
);

INSERT INTO fruit (id, name) VALUES (1, '苹果');
INSERT INTO fruit (id, name) VALUES (1, '梨子');
INSERT INTO fruit (id, name) VALUES (1, '香蕉');
INSERT INTO fruit (id, name) VALUES (2, '葡萄');
INSERT INTO fruit (id, name) VALUES (2, '桃子');
INSERT INTO fruit (id, name) VALUES (3, '橙子');
Salin selepas log masuk

Kita boleh menggunakan pernyataan SQL berikut untuk menggabungkan nama dengan id yang sama ke dalam rentetan:

SELECT id, GROUP_CONCAT(name SEPARATOR ',') AS merged_names
FROM fruit
GROUP BY id;
Salin selepas log masuk

Selepas menjalankan pernyataan SQL di atas, kita boleh mendapatkan hasil berikut:

id | merged_names
---|-------------
1  | 苹果,梨子,香蕉
2  | 葡萄,桃子
3  | 橙子
Salin selepas log masuk

Dalam contoh ini, kami mengumpulkan berdasarkan lajur id dan menggunakan fungsi GROUP_CONCAT untuk menggabungkan lajur nama dalam setiap kumpulan menjadi rentetan, dipisahkan dengan koma.

Perlu diingatkan bahawa jika kita tidak perlu mengalih keluar pendua, kita boleh menghilangkan kata kunci DISTINCT. Selain itu, jika anda perlu mengisih rentetan yang digabungkan, anda boleh menggunakan klausa ORDER BY. Sebagai contoh, kita boleh mengisih rentetan yang digabungkan dalam susunan abjad dalam lajur nama:

SELECT id, GROUP_CONCAT(name ORDER BY name ASC SEPARATOR ',') AS merged_names
FROM fruit
GROUP BY id;
Salin selepas log masuk

Selepas menjalankan pernyataan SQL di atas, kita boleh mendapatkan hasil berikut:

id | merged_names
---|-------------
1  | 梨子,苹果,香蕉
2  | 桃子,葡萄
3  | 橙子
Salin selepas log masuk

Anda boleh melihat bahawa rentetan yang digabungkan disusun mengikut susunan abjad dalam lajur nama Diisih mengikut abjad.

Dalam aplikasi praktikal, fungsi GROUP_CONCAT sangat praktikal. Dengan menggabungkan berbilang baris data ke dalam satu rentetan, kami boleh meringkaskan dan memaparkan data dengan mudah serta meningkatkan fleksibiliti pertanyaan pangkalan data.

Untuk meringkaskan, artikel ini memperkenalkan cara menggunakan fungsi GROUP_CONCAT dalam MySQL untuk menggabungkan berbilang baris data ke dalam rentetan. Melalui demonstrasi contoh praktikal, saya berharap pembaca dapat menguasai penggunaan fungsi ini dan mengendalikan keperluan penggabungan data dalam pangkalan data dengan lebih baik.

Atas ialah kandungan terperinci Cara menggunakan fungsi GROUP_CONCAT dalam MySQL untuk menggabungkan berbilang baris data ke dalam rentetan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!