Memilih Rekod Rawak daripada Setiap Kategori dalam MySQL
Pertanyaan pangkalan data ini melibatkan pemilihan rekod rawak daripada setiap kategori dalam jadual. Jadual yang disediakan mengandungi jadual "Item" dengan lajur untuk "id," "nama" dan "kategori." Setiap item tergolong dalam satu daripada tujuh kategori yang diwakili dalam jadual "Kategori" dengan lajur "id" dan "kategori".
Untuk mendekati pertanyaan ini dengan berkesan, anda boleh menggunakan gabungan gabungan dan fungsi RAND() . Berikut ialah pertanyaan yang menyelesaikan tugasan:
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
Pertanyaan ini mula-mula menyertai jadual "Kategori" dan "Item" pada lajur "kategori" untuk mendapatkan semula semua item dan kategori yang sepadan. Klausa ORDER BY RAND() menggunakan susunan rawak pada keputusan. Selepas itu, pertanyaan itu dibungkus dalam subkueri dan dikumpulkan mengikut lajur "cid". Pengumpulan ini memastikan bahawa setiap kategori dihadkan kepada satu rekod rawak.
Perhatikan bahawa pengoptimuman prestasi mungkin diperlukan untuk jadual besar. Jika pertanyaan berjalan dengan perlahan, pertimbangkan untuk menggunakan JADUAL TEMPORARY MySQL atau mencipta indeks pada lajur "kategori".
Atas ialah kandungan terperinci Bagaimana untuk Memilih Rekod Rawak daripada Setiap Kategori dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!