使用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中文網其他相關文章!