Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengelakkan Baris Pendua Apabila Menyertai Berbilang Jadual dalam MySQL?
Masalah:
Apabila memilih data daripada berbilang jadual dalam MySQL menggunakan JOIN mudah tanpa menyatakan sebarang keadaan, ia boleh mengakibatkan baris pendua disebabkan oleh berbilang baris yang dicantumkan untuk setiap kunci yang sepadan. Bagaimanakah kita boleh menghapuskan pendua ini dan mendapatkan semula baris unik untuk setiap minuman, termasuk semua foto yang berkaitan?
Penyelesaian:
Untuk menyelesaikan isu ini, kita perlu menggunakan fungsi pengumpulan dan agregat untuk gabungkan baris pendua dan pilih nilai yang diingini daripadanya.
Pertama, kami mengumpulkan baris oleh drinks_id untuk mendapatkan hanya satu baris untuk setiap minuman:
SELECT name, price, photo FROM drinks, drinks_photos WHERE drinks.id = drinks_id GROUP BY drinks_id
Pendekatan ini akan mengembalikan satu baris setiap minuman dengan hanya satu foto. Untuk memasukkan semua foto yang berkaitan, kami boleh menggunakan fungsi GROUP_CONCAT untuk menggabungkan nama fail foto menjadi satu rentetan:
SELECT name, price, GROUP_CONCAT(photo, ',') FROM drinks, drinks_photos WHERE drinks.id = drinks_id GROUP BY drinks_id
Pertanyaan ini akan menjana jadual dengan baris minuman unik dan rentetan bercantum yang mengandungi semua nama fail foto untuk setiap minuman.
Perhatikan bahawa GROUP_CONCAT ialah fungsi khusus MySQL dan mungkin tidak disokong dalam yang lain sistem pangkalan data. Dalam kes sedemikian, pendekatan alternatif, seperti subkueri atau jenis data tatasusunan, mungkin perlu dipertimbangkan.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Baris Pendua Apabila Menyertai Berbilang Jadual dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!