MySql从不同的随机类别中获取随机元素

时间:2015-05-07 11:38:50

标签: mysql

我有一个表格图片,其中有i_id | imgpath | category

我想随机选择60个不同的类别,并从每个类别中随机选择一个图像。

到目前为止,我有一个查询

SELECT DISTINCT(category), i_id, imgpath FROM images ORDER BY RAND() LIMIT 60

但它有时会产生同一类别的多个图像。

1 个答案:

答案 0 :(得分:2)

您可以使用GROUP_CONCAT为每个类别设置逗号分隔的imgpath列表,以便每个类别的图像随机排序,然后通过逗号分隔的imgpath列表SUBSTRING_INDEX来选择一个图片

SELECT category, 
SUBSTRING_INDEX(
GROUP_CONCAT(imgpath ORDER BY RAND())
,',',1) imgpath
FROM images 
GROUP BY category 
ORDER BY RAND() 
LIMIT 60