NEWID(): Selecionando registros aleatórios no SQL Server

Informática

27/11/2008

Por: Sueli Mitie Joboji

Para obter os dados de uma tabela de forma aleatória, o SQL Server dispõe a função NEWID(). Para isto,basta utilizá-la na cláusula ORDER BY de sua consulta. Como o próprio nome diz a cada execução é gerado um novo GUID (Global Unique Identifier) e o registro será ordenado de acordo com esse valor. Esses GUIDs são únicos, logo, a ordenação nunca será igual.

Exemplo:
   
    SELECT * FROM Clientes ORDER BY NEWID()

Podemos utilizar o TOP 1 para retornar apenas o primeiro registro de forma aleatória: Veja:

    SELECT TOP 1 * FROM Clientes ORDER BY NEWID()

A função NEWID() pode ser usada também na Inserção de dados na tabela. Primeiro criamos uma tabela com dois campos: GuidCol – do tipo uniqueidentifier – e NumCol – do tipo inteiro.
   
    CREATE TABLE Minha_Tabela(GuidCol uniqueidentifier, NumCol int)

Agora, faremos a inserção de dados nesta tabela:

    INSERT INTO Minha_Tabela(NEWID(), 4) //GuidCol nunca armazenará valor iguais

    INSERT INTO Minha_Tabela(NEWID(), 5)

E por fim, selecionaremos um registro aleatório:

    SELECT * TOP 1 FROM Minha_Tabela ORDER BY NEWID() // será escolhido 1(uma) tupla inserida acima randomicamente.

Esta apresentação reflete a opinião pessoal do autor sobre o tema, podendo não refletir a posição oficial do Portal Educação.


Colunista Portal - Educação

por Colunista Portal - Educação

O Portal Educação possui uma equipe focada no trabalho de curadoria de conteúdo. Artigos em diversas áreas do conhecimento são produzidos e disponibilizados para profissionais, acadêmicos e interessados em adquirir conhecimento qualificado. O departamento de Conteúdo e Comunicação leva ao leitor informações de alto nível, recebidas e publicadas de colunistas externos e internos.

Portal Educação

UOL CURSOS TECNOLOGIA EDUCACIONAL LTDA, com sede na cidade de São Paulo, SP, na Alameda Barão de Limeira, 425, 7º andar - Santa Cecília CEP 01202-001 CNPJ: 17.543.049/0001-93