Ordenação Randômica com SQL
Fabio Mazzarino
Doses Diárias, HowTo, Programação - -
Um problema encontrado hoje. Como fazer um ORDER BY RANDOM com SQL?
Claro que o primeiro que eu perguntei foi o Fred, que odeia SQL, só pra tirar uma casca. Mas nada melhor que um pouco de tutano e documentação para resolver os problemas.
Encontrei na documentação do MySQL uma função chamada RAND, que retorna um número de ponto flutuante randômico entre 0 e 1. Essa função pode ser utilizada na cláusula SELECT.
Portanto, o SQL que eu queria ficou assim:
SELECT p.*, RAND() as random from produtos
WHERE p.destaque > 1000
ORDER BY random
Isso vai retornar uma lista de produtos com destaque maior que 1000 ordenados randomicamente.
Comentários
August 9th, 2007 às 8:02 pm
Interessante… eu só gostaria de saber em que ocasião seria desejável uma consulta randômica em SQL… não consigo pensar, assim de pronto, uma aplicação prática realmente útil pra isso…
August 9th, 2007 às 11:50 pm
Bruno:
Vou dar um exemplo bem prático.
Imagine que seus clientes lhe pagam para ter mais destaque no seu site. E para isso vc faz diversos níveis de destaque. Só que é normal diversos clientes terem comprado o mm nível de destaque. Assim, vc randomiza os destaques do mm nível, assim cada destaque aparece o mm número de vezes.
Para isso vc faria um ‘ORDER BY destaqu, random’.
August 10th, 2007 às 9:55 am
Ah, sim… tinha pensado em outros exemplos, mas nos quais não pareciam realmente necessária uma “desordenação”. Agora sim, tudo faz sentido…
Deixe Seu Comentário