Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh menggabungkan nilai dengan cekap daripada berbilang baris ke dalam satu rentetan dalam SQLite menggunakan GROUP_CONCAT?
Memahami GROUP_CONCAT dalam SQLite
Apabila berurusan dengan skema pangkalan data hubungan, selalunya perlu untuk menggabungkan nilai daripada berbilang baris jadual menjadi satu rentetan. Dalam SQLite, fungsi GROUP_CONCAT menyediakan penyelesaian yang berkuasa untuk tugas ini.
Data dan Objektif Anda
Pertimbangkan sampel data berikut, yang mewakili pengarang yang dikaitkan dengan abstrak:
1 A 1 B 1 C 1 D 2 E 2 F 3 G 3 H 3 I 3 J 3 K
Anda ingin menukar data ini kepada format yang setiap ID abstrak unik (_id) dikaitkan dengan senarai nama pengarang yang dipisahkan koma, seperti ini:
1 A,B,C,D 2 E,F
Menggunakan GROUP_CONCAT dengan Fungsi Agregat
Fungsi GROUP_CONCAT, digabungkan dengan fungsi agregat dan GROUP BY klausa, boleh mencapai matlamat ini. Pendekatan biasa ialah mencipta jadual perantaraan menggunakan subkueri, seperti yang anda cuba pada mulanya. Walau bagaimanapun, anda terlepas satu langkah penting.
Pendekatan yang Betul
Untuk menggunakan GROUP_CONCAT dengan betul, lakukan langkah berikut:
Pertanyaan Dibetulkan
Berikut ialah pertanyaan yang diperbetulkan yang mengikut prinsip ini:
SELECT ABSTRACTS_ITEM._id, GROUP_CONCAT(ABSTRACT_AUTHOR.NAME) AS GroupedName FROM ABSTRACTS_ITEM JOIN AUTHORS_ABSTRACT ON ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID JOIN ABSTRACT_AUTHOR ON ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID GROUP BY ABSTRACTS_ITEM._id;
Alternatif Pertanyaan
Sebagai alternatif, anda boleh menggunakan pendekatan subkueri seperti yang anda cuba pada mulanya, tetapi dengan sintaks yang betul:
SELECT ID, GROUP_CONCAT(NAME) FROM (select ABSTRACTS_ITEM._id AS ID, Name from ABSTRACTS_ITEM , ABSTRACT_AUTHOR , AUTHORS_ABSTRACT where ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID and ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID) GROUP BY ID;
Kedua-dua pertanyaan akan berjaya menggabungkan nama pengarang untuk setiap ID abstrak , menyediakan format output yang diingini.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menggabungkan nilai dengan cekap daripada berbilang baris ke dalam satu rentetan dalam SQLite menggunakan GROUP_CONCAT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!