Se nós utilizarmos o função NEWID() na cláusula ORDER BY, então para cada registro teremos um novo GUID (Global Unique Identifier) e o registro será ordenado de acordo com esse valor. Como a cada execução os GUIDs gerados serão únicos, a ordenação nunca será igual. Pode-se então fazer um TOP 1 nesta query para pegar apenas o primeiro registro retornado e teremos então obtido um resgistro de forma aleatória.
Veja o exemplo:
SELECT TOP 1 au_id,au_lname, au_fname
FROM pubs..authors ORDER BY NEWID()
Resultado:
au_id au_lname au_fname
———– —————————————- ——————–
172-32-1176 White Johnson
Execute esta query quantas vezes desejar e verá que o registro obtido nunca será igual ao registro anterior. Diferente do que acontecerá se você executar:
SELECT TOP 1 au_id,au_lname, au_fname
FROM pubs..authors
Resultado:
au_id au_lname au_fname
———– —————————————- ——————–
409-56-7008 Bennet Abraham
Neste caso, o registro retornado sempre será o mesmo.
Obs: Caso queira obter dois ou mais registros aleatórios, basta alterar o valor de TOP para o valor desejado.
Para saber mais sobre a função NEWID(), consulte o Books Online do SQL Server 2000.
O que você achou desta dica ? Deixe seu voto no bloco “Classificação de notícias”. Seu feedback é muito importante !

