MYSQL独特的随机连接查询

时间:2015-03-19 19:53:02

标签: mysql join random distinct

我有两张桌子

albums      fotos
------      -----
id          id
titulo      url
            fk_album

我想知道如何从所有非空的相册中随机选择照片......并且必须是不同的...例如:

albums          fotos
------          ------
1 A             1 my_url_1 2
2 B             2 my_url_2 2 
3 C             3 my_url_3 1
4 D             4 my_url_4 2
5 E             5 my_url_5 3
                6 my_url_6 3

我想要这些结果:(分明,随机和加入)

result0 -> 
       albums.id     -> 2
       albums.titulo -> B
       fotos.url     -> my_url_2 (this must be random) (or my_url_1 or my_url_4)
result1 -> 
       albums.id     -> 3
       albums.titulo -> C
       fotos.url     -> my_url_6 (this must be random) (or my_url_5 )
result2 -> 
       albums.id     -> 1
       albums.titulo -> A
       fotos.url     -> my_url_3 (the album only has this foto url)

我尝试了很多东西,但实际上我只能用照片获得不同的专辑,但没有随机值。

编辑: 我正在使用以下查询,它返回带有照片的5张专辑(所有不同...不重复)。但每张专辑我总是得到相同的照片。我每次都需要不同的照片(如果专辑当然有多张照片)

select distinct
     a.id,
     a.titulo,
     f.url
 from albums as a
      inner join
          fotos as f
          on  a.id = f.fk_album
 where f.fk_album = a.id
 GROUP by f.fk_album, a.id

1 个答案:

答案 0 :(得分:0)

我在这里有点猜测,我不确定这是什么表现,但你可以使用类似的东西:

SELECT a.id,
     a.titulo,
     f.url
 FROM albums AS a
      JOIN (SELECT url, fk_album FROM fotos ORDER BY RAND()) as f
          ON a.id = f.fk_album
 GROUP BY a.id

(我从您的查询中删除了distinct,where和group by,因为这些语句似乎是多余的)