Predicados ALL, DISTINCT, DISTINCTROW, TOP

Especifica os registros selecionados com consultas do SQL (SQL): uma consulta e linguagem de programação de banco de dados muito usada para acessar, consultar, atualizar e gerenciar dados em sistemas de banco de dados relacional.).

Sintaxe

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
FROM tabela

Uma instrução SELECT contendo esses predicados possui as seguintes partes:

Parte Descrição
ALL

Usada se você não incluir um dos predicados. O mecanismo de banco de dados do Microsoft Access seleciona todos os registros que atendem às condições na SQL statement (cadeia/instrução SQL: uma expressão que define um comando SQL, como SELECT, UPDATE ou DELETE, e inclui cláusulas como WHERE e ORDER BY. As cadeias/instruções SQL são normalmente usadas em consultas e funções agregadas.). Os dois exemplos a seguir são equivalentes e retornam todos os registros da tabela Funcionários:


                SELECT ALL *
              

                FROM Employees
              

                ORDER BY 
                EmployeeID
                ;
              

                SELECT *
              

                FROM Employees
              

                ORDER BY 
                EmployeeID
                ;
              
DISTINCT

Omite registros que contêm dados duplicados nos campos selecionados. Para serem incluídos nos resultados da consulta, os valores para cada campo listado na instrução SELECT devem ser exclusivos. Por exemplo, vários funcionários listados em uma tabela Funcionários podem ter o mesmo sobrenome. Se dois registros contiverem Souza no campo Sobrenome, a seguinte instrução SQL retornará apenas um registro que contém Souza:


                SELECT DISTINCT 
                LastName
              

                FROM Employees;
              

Se você omitir DISTINCT, essa consulta retornará os dois registros Souza.

Se a cláusula SELECT contiver mais de um campo, a combinação de valores de todos os campos deverá ser exclusiva para que um determinado registro seja incluído nos resultados.

A saída de uma consulta que usa DISTINCT não pode ser atualizada e não reflete as alterações subsequentes feitas por outros usuários.

DISTINCTROW

Omite dados com base em registros inteiros duplicados e não apenas em campos duplicados. Por exemplo, você poderia criar uma consulta que associa as tabelas Clientes e Pedidos no campo IDCliente. A tabela Clientes não contém campos IDCliente duplicados, mas a tabela Pedidos contém, pois cada cliente pode ter muitos pedidos. A seguinte instrução SQL mostra como você pode usar DISTINCTROW para produzir uma lista de empresas que têm pelo menos um pedido, mas sem fornecer quaisquer detalhes sobre esses pedidos:


                SELECT DISTINCTROW 
                CompanyName
              

                FROM
                 Customers INNER JOIN Orders
              

                ON 
                Customers.CustomerID
                 = 
                Orders.CustomerID
              

                ORDER BY 
                CompanyName
                ;
              

Se você omitir DISTINCTROW, essa consulta produzirá várias linhas para cada empresa que tem mais de um pedido.

DISTINCTROW tem efeito apenas quando você seleciona campos de algumas, mas não todas, as tabelas usadas na consulta. DISTINCTROW será ignorado se a consulta incluir apenas uma tabela, ou se você obter saídas de campos de todas as tabelas.

TOP n [PERCENT]

Retorna uma determinada quantidade de registros que se enquadram na parte superior ou inferior de um intervalo especificado por uma cláusula ORDER BY. Vamos supor que você queira os nomes dos 25 principais estudantes da turma de 1994:


                SELECT TOP 25
              

                FirstName
                , 
                LastName
              

                FROM Students
              

                WHERE 
                GraduationYear
                 = 2003
              

                ORDER BY 
                GradePointAverage
                 DESC;
              

Se você não incluir a cláusula ORDER BY, a consulta retornará um conjunto aleatório de 25 registros da tabela Alunos que atendam à cláusula WHERE.

O predicado TOP não faz escolhas entre valores iguais. No exemplo anterior, se as médias mais altas dos registros vinte cinco e vinte seis forem iguais, a consulta retornará 26 registros.

Você também pode usar a palavra reservada PERCENT para retornar uma determinada porcentagem de registros que se enquadram na parte superior ou inferior de um intervalo especificado por uma cláusula ORDER BY. Vamos supor que, em vez dos 25 estudantes principais, você queira os 10 por cento piores da classe:


                SELECT TOP 10 PERCENT
              

                FirstName
                , 
                LastName
              

                FROM Students
              

                WHERE 
                GraduationYear
                 = 2003
              

                ORDER BY 
                GradePointAverage
                 ASC;
              

O predicado ASC especifica um retorno dos valores inferiores. O valor após TOP deve ser um Integer (tipo de dados Inteiro: um tipo de dados fundamental que contém números inteiros. Uma variável Integer é armazenada como um número de 16 bits (2 bytes) no intervalo de -32.768 a 32.767.) não assinado.

TOP não afeta a possibilidade de atualização de uma consulta.

tabela O nome da tabela da qual os registros são recuperados.



 
 
Aplica-se a:
Access 2007