Predicados ALL, DISTINCT, DISTINCTROW, TOP

Especifica os registros selecionados com consultas 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 que contém esses predicados possui as seguintes partes:

Parte Descrição
ALL

Suponha que você não inclua um dos predicados. O mecanismo de banco de dados do Microsoft Access selecionará todos os registros que satisfaçam os critérios da instrução SQL (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 Employees:

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 de cada campo relacionado na instrução SELECT devem ser únicos. Por exemplo, vários funcionários relacionados na tabela Employees podem ter o mesmo sobrenome. Se dois registros contiverem Smith no campo Sobrenome, a instrução SQL a seguir retorna apenas um registro que contém Smith:

SELECT DISTINCT LastName
FROM Employees;

Se você omitir DISTINCT, essa consulta retornará ambos os registros Smith.

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 é atualizável e não reflete alterações subseqüentes feitas por outros usuários.

DISTINCTROW

Omite dados com base em registros inteiros duplicados e não apenas campos duplicados. Por exemplo, você pode criar uma consulta que associe as tabelas Customers e Orders no campo CustomerID. A tabela Customers não possui campos CustomerID duplicados, mas a tabela Orders possui, pois cada cliente pode ter muitos pedidos. A instrução SQL a seguir mostra como você pode usar o DISTINCTROW para criar 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 criará várias linhas para cada empresa que tiver mais de um pedido.

DISTINCTROW entra em vigor somente quando você seleciona campos de algumas, mas não de todas, as tabelas usadas na consulta. DISTINCTROW será ignorado se a sua consulta incluir apenas uma tabela ou se você retirar campos de todas as tabelas.

TOP n [PERCENT]

Retorna um determinado número de registros que se encontrem na parte superior ou na parte inferior de um intervalo especificado pela cláusula ORDER BY. Suponha que você queira os nomes dos primeiros 25 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 arbitrário de 25 registros da tabela Students que satisfaça a cláusula WHERE.

O predicado TOP não opta por valores iguais. No exemplo anterior, se as médias de pontuação de grau 25 e 26 forem as mesmas, a consulta retornará 26 registros.

Você também pode usar a palavra reservada PERCENT para retornar uma determinada porcentagem de registros que estão na parte superior ou inferior de um intervalo especificado pela cláusula ORDER BY. Suponha que, em vez dos primeiros 25 estudantes, você queira os últimos 10% da turma:

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 que segue 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.) sem sinal.

TOP não afeta a capacidade ou a não capacidade de atualização da consulta.

tabela Os nomes das tabelas cujos registros serão recuperados.
 
 
Aplica-se a:
Access 2007