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
Lepaskan: 2024-12-17 12:47:24
asal
275 orang telah melayarinya

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan