Pemilihan Item Rawak daripada Kategori Berbeza menggunakan MySQL
Dalam senario pangkalan data yang melibatkan jadual "Item" dengan lajur pengkategorian, tugas memilih satu item secara rawak daripada setiap kategori menimbulkan cabaran. Untuk menangani perkara ini, mari kita terokai pendekatan berikut menggunakan pertanyaan MySQL:
Kaedah 1: Sertaan Dalam dan Pengumpulan Separa
Pertanyaan ini mendapatkan semula semua item yang digabungkan dengan kategori yang disusun secara 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()
Untuk mengehadkan setiap kategori kepada satu item, kami membungkus ini pertanyaan dalam separa KUMPULAN OLEH:
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
Pertimbangan
Perhatikan bahawa pengelompokan dilakukan sebelum mengisih kerana pertanyaan termasuk klausa GROUP BY dan ORDER BY. Oleh itu, pertanyaan luar mengumpulkan hasil selepas pertanyaan dalaman mengisihnya. Pendekatan dua pertanyaan ini memastikan bahawa setiap kategori mengandungi hanya satu item rawak.
Walaupun pertanyaan ini menyediakan penyelesaian, adalah penting untuk mengakui potensi had kecekapannya. Kami mengalu-alukan sebarang cadangan untuk pengoptimuman prestasi.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Satu Item Secara Rawak dari Setiap Kategori dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!