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