Alguem já deve ter sentido a necessidade de obter dados de forma aleatória em um banco de dados, e pode ter passado horas tentando encontrar uma maneira mais fácil para isto.
Neste artigo tento descrever a forma que isto pode ser feita no SQL Server e aproveito para complementar mostrando também como isto pode ser feito através do MySl.
O SQL Server possui uma função chamada NEWID() que sorteia valores de chaves distintos, deve ser utilizado na cláusula ORDER BY retornando então os registros ordenados de forma aleatória. Então, se deseja-se obter uma quantidade determinada de registros de forma aleatória.
Veja o exemplo de uma query que retorna 10 funcionários do Rio de Janeiro, de forma aleatória:
SELECT TOP 10 * FROM tbFuncionarios WHERE nmEstado='RJ' ORDER BY NEWID()
Este mesmo código no MySql sofreria minimas modificações, pois lá temos a função RAND() que aparentemente realiza a mesma função:
Veja o exemplo:
SELECT * FROM `tbFuncionarios` WHERE `nmEstado`='RJ' ORDER BY RAND() LIMIT 1,10
Espero que com este pequeno artigo tenha facilitado a vida de diversos programadores que da mesma forma que eu já arrancaram muitos cabelos pensando nesta solução.
Diário do Programador