GROUP_CONCAT menghasilkan nilai pendua: masalah selepas menambah LEFT JOIN
Soalan:
Seorang pengguna mempunyai nilai pendua dalam hasil GROUP_CONCAT mereka selepas menambahkan kategori LEFT JOIN pada pertanyaan sedia ada yang mendapatkan semula data pengguna, teg dan reputasi.
Penerangan masalah:
Pertanyaan asal mendapatkan semula dua teg pertama yang dikaitkan dengan setiap pengguna dengan betul. Walau bagaimanapun, selepas menambah kategori LEFT JOIN, terdapat beberapa pendua dalam keputusan untuk label dan kategori. Output yang dijangkakan ialah dua kategori pertama harus unik untuk setiap pengguna.
Penyelesaian:
Masalah berlaku kerana LEFT JOIN menyebabkan setiap user_id digabungkan dengan berbilang kombinasi tag dan kategori, mengakibatkan baris pendua selepas GROUP BY. Untuk menyelesaikan masalah ini, beberapa kaedah boleh digunakan:
Kaedah SERTAI KIRI Kumulatif:
Kaedah Sertaan Dalaman Simetri:
Kaedah subkueri skalar:
Kaedah LEFT JOIN yang diubah suai menggunakan DISTINCT GROUP_CONCAT:
Pilihan pendekatan mungkin bergantung pada pertukaran kejuruteraan, termasuk kecekapan pelan pertanyaan, tahap pertindihan data dan masa.
Atas ialah kandungan terperinci Mengapakah Keputusan GROUP_CONCAT Saya Digandakan Selepas Menambah LEFT JOIN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!