我有下表
SQLFiddle
我试图做的是选择三个随机图像,但是要确保没有两个图像具有相同的对象,我试图做的是将GROUP BY和ORDER BY rand()一起执行,但是失败了。它总是给我cat1.jpg,dog1.jpg,box1.jpg(所有路径以1结尾而不是其他路径结尾的图像)
小提琴包括我运行的查询及其运行方式。
您需要的是一个随机聚合函数。通常,当前的RDBMS中没有此类功能。
有人问过类似的问题。
因此,基本思想是将元素随机排序,然后进行分组,然后为每个组选择每个组的第一行。如果我们修改链接上提供的答案之一,则会得到此答案。
select object_id, name, image_path from (SELECT images.image_path AS image_path, objects.id AS object_id, objects.name FROM objects LEFT JOIN images ON images.object_id = objects.id ORDER BY RAND()) as z group by z.object_id, z.name