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

如何從MySQL中的每個類別中隨機選擇一個項目?

Susan Sarandon
發布: 2025-01-04 14:19:40
原創
814 人瀏覽過

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

使用MySQL 從不同類別中隨機選擇項目

在涉及帶有分類列的「Items」表的資料庫場景中,以下任務從每個類別中隨機選擇一個項目構成了挑戰。為了解決這個問題,讓我們探索以下利用MySQL 查詢的方法:

方法1:內連接和部分分組

此查詢檢索與隨機排序的類別連接的所有項目:

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()
登入後複製

為了將每個類別限制為單一項目,我們將此查詢包裝在部分GROUP中BY:

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
登入後複製

注意事項

請注意,分組是在排序之前執行的,因為查詢同時包含 GROUP BY 和 ORDER BY 子句。因此,外部查詢會在內部查詢對結果進行排序後將結果分組。這種兩個查詢方法可確保每個類別僅包含一個隨機項目。

雖然此查詢提供了一種解決方案,但重要的是要承認其潛在的效率限制。我們歡迎任何有關效能優化的建議。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板