Dalam bidang MySQL, anda mungkin menghadapi keperluan untuk memanipulasi data yang dikembalikan daripada pernyataan GROUP_CONCAT. Satu keperluan biasa ialah mengisih nilai dalam rentetan bercantum.
Untuk mencapai ini, anda boleh memanfaatkan permata tersembunyi fungsi GROUP_CONCAT: klausa ORDER BY. Dengan menambahkan klausa ORDER BY pada subquery dalam GROUP_CONCAT, anda boleh mengisih nilai sebelum ia digabungkan.
Contohnya, pertimbangkan pertanyaan berikut:
GROUP_CONCAT((SELECT GROUP_CONCAT(parent.name SEPARATOR " » ") FROM test_competence AS node, test_competence AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.id = l.competence AND parent.id != 1 ORDER BY parent.lft) SEPARATOR "<br />\n") AS competences
Pertanyaan ini mengembalikan baris dengan nilai gabungan lajur parent.name, diisih dalam tertib menaik berdasarkan parent.lft lajur.
Walau bagaimanapun, jika anda inginkan susunan tertentu, seperti tertib menurun, cuma laraskan klausa ORDER BY:
... ORDER BY parent.lft DESC
Perlu diperhatikan bahawa klausa ORDER BY dalam GROUP_CONCAT hanyalah terpakai kepada subkueri paling dalam. Jika anda mempunyai subkueri berbilang lapisan, pertanyaan luar tidak akan dipengaruhi oleh klausa ORDER BY.
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Nilai Dalam Rentetan GROUP_CONCAT dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!