我有一个表格图片,其中有i_id | imgpath | category
行
我想随机选择60个不同的类别,并从每个类别中随机选择一个图像。
到目前为止,我有一个查询
SELECT DISTINCT(category), i_id, imgpath FROM images ORDER BY RAND() LIMIT 60
但它有时会产生同一类别的多个图像。
答案 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