Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memilih Satu Item Secara Rawak dari Setiap Kategori dalam MySQL?

Bagaimana untuk Memilih Satu Item Secara Rawak dari Setiap Kategori dalam MySQL?

Susan Sarandon
Lepaskan: 2025-01-04 14:19:40
asal
790 orang telah melayarinya

How to Randomly Select One Item from Each Category in MySQL?

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

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

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!

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