首頁 >資料庫 >mysql教程 >MySQL中如何從每個類別中隨機選擇一筆記錄?

MySQL中如何從每個類別中隨機選擇一筆記錄?

DDD
DDD原創
2024-12-26 15:55:14553瀏覽

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

從MySQL 中的每個類別中選擇一條隨機記錄

此資料庫查詢涉及從表中的每個類別中選擇一條隨機記錄。提供的表包含一個「Items」表,其中包含「id」、「name」和「category」列。每個項目都屬於帶有“id”和“category”列的“Categories”表中表示的七個類別之一。

要有效地處理此查詢,您可以結合使用聯結和 RAND() 函數。以下是完成該任務的查詢:

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

此查詢首先連接「類別」列上的「類別」和「項目」表,以檢索所有項目及其對應的類別。 ORDER BY RAND() 子句對結果套用隨機排序。隨後,查詢被包裝在子查詢中並按“cid”列分組。這種分組確保每個類別僅限於單一隨機記錄。

請注意,對於大型表,效能最佳化可能是必要的。如果查詢運作緩慢,請考慮使用 MySQL 的 TEMPORARY TABLES 或在「category」欄位上建立索引。

以上是MySQL中如何從每個類別中隨機選擇一筆記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn