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