首页 >数据库 >mysql教程 >如何从MySQL中的每个类别中随机选择一个项目?

如何从MySQL中的每个类别中随机选择一个项目?

Susan Sarandon
Susan Sarandon原创
2025-01-04 14:19:40797浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn