MYSQL 不同的随机连接查询
MYSQL distinct random join query
我有两张桌子
albums fotos
------ -----
id id
titulo url
fk_album
我想知道如何从所有相册中 select 不为空的随机照片...并且必须是不同的...例如:
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)
我尝试了很多方法,但实际上我只能得到带有照片但没有随机值的不同相册。
编辑:
我正在使用以下查询,returns 我有 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
我在这里有点猜测,我不确定这方面的表现如何,但你可以使用类似的东西:
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,因为这些语句看起来多余)
我有两张桌子
albums fotos
------ -----
id id
titulo url
fk_album
我想知道如何从所有相册中 select 不为空的随机照片...并且必须是不同的...例如:
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)
我尝试了很多方法,但实际上我只能得到带有照片但没有随机值的不同相册。
编辑: 我正在使用以下查询,returns 我有 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
我在这里有点猜测,我不确定这方面的表现如何,但你可以使用类似的东西:
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,因为这些语句看起来多余)