logo

ORDEM SQL POR ALEATÓRIO

Se você quiser que o registro resultante seja ordenado aleatoriamente , você deve usar os seguintes códigos de acordo com vários bancos de dados.

Aqui fica uma pergunta: qual a necessidade de buscar um registro aleatório ou uma linha de um banco de dados?

Às vezes você pode querer exibir informações aleatórias como artigos, links, páginas , etc., para o seu usuário.

Se você quiser buscar linhas aleatórias de qualquer um dos bancos de dados, será necessário usar algumas consultas alteradas de acordo com os bancos de dados.

    Selecione uma linha aleatória com MySQL:

Se você quiser retornar uma linha aleatória com MY SQL, use a seguinte sintaxe:

 SELECT column FROM table ORDER BY RAND () LIMIT 1; 
    Selecione uma linha aleatória com Postgre SQL:
 SELECT column FROM table ORDER BY RANDOM () LIMIT 1; 
    Selecione uma linha aleatória com SQL Server:
 SELECT TOP 1 column FROM table ORDER BY NEWID (); 
    Selecione uma linha aleatória com oracle:
 SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1; 
    Selecione uma linha aleatória com IBM DB2:
 SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY; 

Para entender esse conceito de forma prática, vejamos alguns exemplos utilizando o banco de dados MySQL. Considere que temos uma tabela de itens criada no banco de dados com os seguintes dados:

Tabela: itens

EU IA Nome do item Quantidade do item Preço do item Data de compra
1 Sabão 5 200 08/07/2021
2 Pasta de dentes 2 80 10/07/2021
3 Caneta 10 cinquenta 12/07/2021
4 Garrafa 1 250 13/07/2021
5 Escovar 3 90 15/07/2021

Suponha que queiramos recuperar qualquer registro aleatório da tabela de itens.

Escreveremos a consulta da seguinte forma:

 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

Podemos obter os seguintes resultados:

EU IA Nome do item Quantidade do item Preço do item Data de compra
3 Caneta 10 vinte 12/07/2021

Agora vamos tentar executar a mesma consulta mais uma vez.

 mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1; 

Podemos obter os seguintes resultados:

comando linux make
EU IA Nome do item Quantidade do item Preço do item Data de compra
5 Escovar 3 90 15/07/2021

A partir dos resultados acima, podemos concluir que obtemos registros diferentes como saída nas duas vezes, embora tenhamos executado a mesma consulta duas vezes. A função RAND () selecionou registros aleatórios ambas as vezes para a mesma consulta de uma única tabela. Portanto, mesmo que executemos a mesma consulta novamente, obteremos resultados diferentes a cada vez. Existe uma rara possibilidade de obter o mesmo registro consecutivamente usando a função RAND().

Agora, suponha que você queira que todos os registros da tabela sejam buscados aleatoriamente.

Para fazer isso, precisamos executar a seguinte consulta:

 mysql> SELECT * FROM items ORDER BY RAND (); 

Podemos obter os seguintes resultados:

EU IA Nome do item Quantidade do item Preço do item Data de compra
4 Garrafa 1 250 13/07/2021
5 Escovar 3 90 15/07/2021
1 Sabão 5 200 08/07/2021
2 Pasta de dentes 2 80 10/07/2021
3 Caneta 10 cinquenta 12/07/2021

Também existe a possibilidade de obtermos alguns arranjos diferentes de registros se executarmos novamente a função RAND() na tabela de funcionários.