Rumah > pangkalan data > tutorial mysql > Bagaimana Mengendalikan Baris Pendua Apabila Menggunakan SELECT DISTINCT dengan Pelbagai Jadual dalam MySQL?

Bagaimana Mengendalikan Baris Pendua Apabila Menggunakan SELECT DISTINCT dengan Pelbagai Jadual dalam MySQL?

DDD
Lepaskan: 2024-12-08 19:17:10
asal
425 orang telah melayarinya

How to Handle Duplicate Rows When Using SELECT DISTINCT with Multiple Tables in MySQL?

PILIH DISTINCT dengan Pelbagai Jadual dalam MySQL

Dalam pertanyaan MySQL, anda menggunakan gabungan tersirat antara minuman dan jadual drinks_photos tanpa sebarang syarat dalam klausa WHERE. Ini menghasilkan produk Cartesian, menghasilkan lima baris dengan nilai berulang untuk nama dan harga. Untuk menghapuskan pendua ini, anda boleh menggunakan klausa SELECT DISTINCT.

Walau bagaimanapun, jika anda ingin mengekalkan semua foto untuk setiap minuman, anda tidak boleh menggunakan SELECT DISTINCT sahaja kerana ia hanya mengembalikan baris yang berbeza. Sebaliknya, anda perlu menggunakan gabungan fungsi pengelompokan dan agregat.

Fungsi Pengumpulan dan Agregat

Pengumpulan mengagregatkan baris berdasarkan lajur atau lajur yang ditentukan. Dalam kes ini, anda ingin mengumpulkan hasil mengikut drinks_id untuk mendapatkan satu baris setiap minuman. Anda kemudian boleh menggunakan fungsi agregat untuk memilih nilai yang diingini bagi setiap hasil terkumpul.

Sebagai contoh, untuk mendapatkan semula foto pertama bagi setiap minuman, anda boleh menggunakan:

SELECT name, price, MIN(photo) AS photo
FROM drinks
JOIN drinks_photos ON drinks.id = drinks_id
GROUP BY drinks_id;
Salin selepas log masuk

MIN () fungsi agregat mengembalikan nilai minimum lajur foto untuk setiap satu kumpulan.

GROUP_CONCAT

Sebagai alternatif, jika anda ingin menggabungkan semua foto untuk setiap minuman menjadi satu rentetan, anda boleh menggunakan fungsi GROUP_CONCAT() :

SELECT name, price, GROUP_CONCAT(photo, ',') AS photos
FROM drinks
JOIN drinks_photos ON drinks.id = drinks_id
GROUP BY drinks_id;
Salin selepas log masuk

Walau bagaimanapun, ambil perhatian bahawa GROUP_CONCAT() bukan fungsi agregat SQL standard dan penggunaannya boleh berbeza-beza merentas pangkalan data yang berbeza.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Baris Pendua Apabila Menggunakan SELECT DISTINCT dengan Pelbagai Jadual dalam MySQL?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan