Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memilih Rekod Rawak daripada Setiap Kategori dalam MySQL?

Bagaimana untuk Memilih Rekod Rawak daripada Setiap Kategori dalam MySQL?

DDD
Lepaskan: 2024-12-26 15:55:14
asal
554 orang telah melayarinya

How to Select a Random Record from Each Category in MySQL?

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

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!

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