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

Bagaimana untuk Memilih Satu Rekod Rawak daripada Setiap Kategori dalam Pangkalan Data MySQL?

Susan Sarandon
Lepaskan: 2024-12-28 02:02:14
asal
438 orang telah melayarinya

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

Merawakkan Pemilihan Pangkalan Data Merentas Berbilang Kategori

Cabaran yang dikemukakan di sini adalah untuk mendapatkan semula satu rekod rawak daripada setiap kategori dalam pangkalan data. Jadual Item menempatkan rekod ini, setiap satunya diberikan kepada kategori yang ditentukan oleh jadual Kategori yang sepadan.

Untuk mendekati tugas ini, seseorang boleh memanfaatkan rawak sedia ada MySQL dengan fungsi RAND() dan klausa LIMIT 1. Walau bagaimanapun, aspek unik di sini ialah keperluan untuk memilih rekod rawak untuk setiap kategori yang berbeza.

Pertanyaan berikut dengan elegan menangani cabaran ini:

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

Struktur pertanyaan ini membolehkan mendapatkan semula satu rekod rawak daripada setiap kategori:

  • Pertanyaan utama menggunakan subkueri untuk mendapatkan semula semua item yang digabungkan dengan masing-masing kategori, diisih secara rawak.
  • Subquery berfungsi sebagai asas untuk penapisan berikutnya yang digunakan oleh separa GROUP BY. Ini memastikan satu rekod setiap kategori dengan mengumpulkan "item_kocok" berdasarkan ID kategori (cid).

Walaupun pendekatan ini mungkin tidak mempunyai kelajuan yang luar biasa, pendekatan ini berkesan menangani cabaran pemilihan rekod rawak merentas berbilang kategori. Cadangan alternatif untuk pengoptimuman adalah dialu-alukan, meningkatkan lagi kegunaan pertanyaan ini.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Satu Rekod Rawak daripada Setiap Kategori dalam Pangkalan Data 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