Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho uma tabela categorizada de produtos onde cada categoria possui vários produtos.
Preciso fazer um select que pegue ALEATORIAMENTE APENAS UM PRODUTO POR CATEGORIA. Sei que a chave é a função RAND() mas não sei como usá-la na query:
Fiz uma query assim;
SELECT *
FROM produtos
WHERE categoria
IN (
SELECT DISTINCT categoria
FROM produtos
)
GROUP BY categoria;
Funciona deste jeito, mas me retorna sempre os mesmos produtos.
Alguém pode me dar uma luz?
Desde já agradeço a todas as respostas.
Tente isto.
Um produto por categoria ....
select produto
from produto p
where categoria = 'x'
order by rand()
limit 1
para cada categoria
select (select produto
from produto p
where categoria = c.categoria
order by rand()
limit 1) produto,c.categoria
from categoria c
... FROM produtos ORDER BY RAND());