Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Data Minuman Unik daripada Berbilang Jadual MySQL dengan Foto Pendua?

Bagaimana untuk Memilih Data Minuman Unik daripada Berbilang Jadual MySQL dengan Foto Pendua?

Patricia Arquette
Patricia Arquetteasal
2024-12-17 12:47:24276semak imbas

How to Select Unique Drink Data from Multiple MySQL Tables with Duplicate Photos?

Memilih Hasil Unik daripada Berbilang Jadual dalam MySQL

Dalam MySQL, apabila melakukan operasi JOIN antara berbilang jadual, mungkin terdapat baris pendua dalam set keputusan. Ini sering berlaku apabila memilih data daripada jadual dengan berbilang baris yang berkaitan dengan satu entri dalam jadual lain.

Pernyataan Masalah

Pertimbangkan contoh berikut:

SELECT name, price, photo
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id;

Pertanyaan ini cuba mendapatkan semula nama, harga dan foto untuk setiap minuman daripada jadual minuman dan minuman_foto. Walau bagaimanapun, ia menghasilkan baris pendua untuk setiap minuman kerana terdapat berbilang foto yang dikaitkan dengan minuman tunggal.

Penyelesaian

Untuk menghapuskan pendua dan memastikan setiap minuman muncul sahaja sekali, kita perlu menggabungkan mekanisme pengelompokan. MySQL menyediakan beberapa cara untuk mencapai ini:

Menggunakan Pengumpulan dan Pengagregatan

Satu pilihan ialah menggunakan klausa GROUP BY untuk mengumpulkan hasil berdasarkan minuman unik dan memohon fungsi agregat untuk memilih nilai lajur yang dikehendaki:

SELECT name, price, photo
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
GROUP BY drinks_id;

Dalam pertanyaan ini, drinks_id bertindak sebagai lajur pengelompokan, memastikan bahawa hanya minuman yang berbeza disertakan dalam keputusan. Selain itu, memandangkan terdapat berbilang foto untuk setiap minuman, kami perlu menentukan foto yang hendak dipaparkan. Dalam contoh ini, foto digunakan, tetapi ia boleh digantikan dengan MIN(foto) atau MAX(foto) untuk mendapatkan semula foto pertama atau terakhir dalam susunan menaik atau menurun, masing-masing.

Menggunakan GROUP_CONCAT

Sebagai alternatif, MySQL menyediakan fungsi GROUP_CONCAT, yang boleh digunakan untuk menggabungkan berbilang nilai ke dalam rentetan tunggal:

SELECT name, price, GROUP_CONCAT(photo)
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
GROUP BY drinks_id;

Pertanyaan ini akan mendapatkan semula nama, harga dan senarai yang dipisahkan koma bagi semua foto yang dikaitkan dengan setiap minuman.

Nota:

Adalah penting untuk ambil perhatian bahawa penggunaan GROUP_CONCAT boleh menyebabkan overhed prestasi jika nilai yang digabungkan adalah besar. Selain itu, berhati-hati terhadap aksara pemisah yang mungkin terdapat dalam nilai itu sendiri.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Data Minuman Unik daripada Berbilang Jadual MySQL dengan Foto Pendua?. 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