Memilih Rekod Rawak Tunggal daripada Setiap Kategori dalam MySQL
Untuk mendapatkan semula item rawak daripada setiap kategori dalam pangkalan data yang ditentukan, dua- pendekatan peringkat adalah disyorkan. Mula-mula, gunakan pertanyaan untuk menggabungkan jadual item dan kategori dalam susunan rawak:
SELECT c.id AS cid, c.category, i.id AS iid, i.name FROM categories c INNER JOIN items i ON c.id = i.category ORDER BY RAND();
Pertanyaan ini akan memaparkan semua item yang digabungkan ke kategori masing-masing dalam urutan rawak. Untuk mengehadkan pemilihan kepada satu item bagi setiap kategori, sarangkan pertanyaan sebelumnya dalam pernyataan GROUP BY separa:
SELECT * FROM ( SELECT c.id AS cid, c.category, i.id AS iid, i.name FROM categories c INNER JOIN items i ON c.id = i.category ORDER BY RAND() ) AS shuffled_items GROUP BY cid;
Separa GROUP BY ini memastikan setiap kategori hanya mengandungi satu item yang dipilih secara rawak. Adalah penting untuk ambil perhatian bahawa klausa ORDER BY mesti digunakan sebelum klausa GROUP BY agar pendekatan ini berfungsi dengan betul.
Walaupun kaedah ini mungkin bukan yang terpantas, kaedah ini menawarkan cara yang boleh dipercayai untuk memilih satu rekod rawak daripada setiap kategori dalam pangkalan data MySQL anda.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Satu Rekod Rawak dari Setiap Kategori dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!