Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengelakkan Baris Pendua Apabila Menyertai Berbilang Jadual dalam MySQL?

Bagaimana untuk Mengelakkan Baris Pendua Apabila Menyertai Berbilang Jadual dalam MySQL?

Susan Sarandon
Susan Sarandonasal
2024-12-06 07:14:14789semak imbas

How to Avoid Duplicate Rows When Joining Multiple Tables in MySQL?

SERTAI dengan Pelbagai 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!

Kenyataan:
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