你需要的是一个随机聚合函数.通常在当前的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
Run Code Online (Sandbox Code Playgroud)