SQL para Consultar Linhas Randômicas de uma Tabela na Database | Blog do Marketing Digital | Tetranet
Inicial » SQL » SQL para Consultar Linhas Randômicas de uma Tabela na Database
Carlos Eduardo 21/02/2010 0 Comentário
Estes dias precisei fazer uma consulta randômica no banco de dados. Uma das soluções que veio a minha cabeça foi escrever um trecho de código para fazer isto (o que seria totalmente desnecessário para o projeto que eu estava trabalhando). Outra solução muito mais simples também apareceu que foi deixar o MySQL cuidar da consulta randômica. Existem muitas formas para selecionar uma linha randomicamente da tabela de um banco de dados. Vou mostrar alguns exemplos de queries que não exigem nenhum tipo de lógica em nosso programa para realizar a randomização. No entanto como é de se esperar para cada database exige uma forma diferente para realizar esta ação, abaixo segue alguns exemplos:
Selecionando uma linha randômica no MySQL:
[sql] SELECT column FROM table ORDER BY RAND() LIMIT 1 [/sql]
Selecionando uma linha randômica no Oracle:
[sql] SELECT column FROM ( SELECT column FROM table ORDER BY dbms_random.value ) WHERE rownum = 1 [/sql]
Selecionando uma linha randômica no PostgreSQL:
[sql] SELECT column FROM table ORDER BY RANDOM() LIMIT 1 [/sql]
Selecionando uma linha randômica no Microsoft SQL Server:
[sql] SELECT TOP 1 column FROM table ORDER BY NEWID() [/sql]
Selecionando uma linha randômica no IBM DB2:
[sql] SELECT column, RAND() as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY [/sql]
Selecionando uma linha randômica no Firebird:
Para selecionar uma linha randômica no Firebird o processo é um pouco mais detalhado. A primeira coisa a se fazer é instalar o ib_udf ( se caso não estiver instalado) ou pelo menos a função rand() com o seguinte procedimento: [sql] DECLARE EXTERNAL FUNCTION rand RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_rand' MODULE_NAME 'ib_udf'; [/sql] E depois você pode fazer a consulta randômica normalmente: [sql] SELECT FIRST 1 * FROM table ORDER BY rand() [/sql] Bom, basicamente é isto. Se alguém souber alguma outra forma de consulta para outros servidores de banco de dados. Sinta-se a vontade para postar nos comentários.
Tags: consulta randomica, firebird, ibm db2, microsoft sql server, mysql, oracle, postgre sql, query, rand, randomico, randon, SQL