você está aqui: Home  → Colunistas  →  Bancos de Dados Livres

SELECT com ordem aleatória

Por Luiz Paulo de Oliveira Santos

Data de Publicação: 12 de Junho de 2008

Fui questionado em uma lista sobre a extração de registros de um banco MySQL em ordem aleatória, ou seja, ao se executar o SELECT os registros deveriam ser exibidos de maneira aleatória a cada vez que o SELECT fosse executado.

O MySQL implementa internamente a função RAND(), que devolve um número entre 0 e 1.

Exemplo:

  - SELECT RAND()
  RAND() 
  0.40686841253831

Obteremos um número de ponto flutuante entre 0 e 1.

Caso seja informado para a função um número inteiro ele utilizará o número informado como SEED para a geração dos números aleatórios. Cuidado, pois pode-se prever o resultado quando se informa a seed.

  - SELECT RAND(22);
  
  RAND(22) 
  
  0.65924883136456
  
  - SELECT RAND(22);
  
  RAND(22) 
  
  0.65924883136456

Para extrairmos registros de maneira aleatória basta incluirmos o RAND() na clausula ORDEY BY.

Exemplo:

  SELECT * FROM tabela WHERE IDADE >= 18 ORDER BY RAND();

Obs: Usuários do Firebird SQL também podem utilizar-se dessa facilidade, porém com uma pequena diferença. Para utilizar um recurso similar no Firebird SQL necessitamos implementar uma função que devolva um número entre 0 e 1, ou utilizar uma função pronta. Pode-se encontrar a função F_RAND() na biblioteca FreeAdhocUDF. No site da biblioteca encontra-se o informações de como utilizá-la.

Forte abraço e até a próxima!

Sobre o autor

Luiz Paulo de Oliveira Santos teve seu primeiro contato com computadores em 1984, estudou BASIC para equipamentos de 8 bits (ZX-81 e Apple 2), em 1985 com o ambiente de 16 bits, e em 1988 com o ambiente de 32 bits. Em 1993 foi um dos primeiros Brasileiros a ter contato com o VBK que em 1995 se tornou o Delphi. Graduou em Tecnologia Em Processamento de Dados, cursou especialização em Análise de Sistemas e atualmente é graduando em Ciências Jurídicas. Atua como analista de suporte de redes da Universidade Metodista de Piracicaba, é editor da revista DB Freemagazine (uma revista gratuíta focada exclusivamente para bancos de dados Cliente/Servidor) e professor nas Faculdades Integradas Einstein de Limeira no curso de Tecnologia em Sistemas de Informação. Tem experiência nas áreas: Sistemas de Computação, Redes e Teleprocessamento de Dados, Bancos de Dados cliente-servidor e SQL. É autor do livro Firebird - Dicas de Segurança, publicado pela Editora Ciência Moderna.

Recomende este artigo nas redes sociais

 

 

Veja a relação completa dos artigos desta coluna