Bem, pelo comentário, você também está satisfeito com uma resposta teórica.
Se você tiver seu array com todas as linhas, use
array_unique()
para se livrar de linhas duplicadas, use shuffle()
para misturá-los e no final você pode pegar uma fatia com array_slice()
. EDITAR:
Você pode melhorá-lo quando já não seleciona linhas duplicadas, então não precisa usar
array_unique()
. Para isso, use DISTINCT
. E se você quiser fazer tudo em uma consulta, você pode fazer algo assim:SELECT DISTINCT column FROM table
ORDER BY RAND()
LIMIT 1000