Predicados ALL, DISTINCT, DISTINCTROW, TOP

Predicados ALL, DISTINCT, DISTINCTROW, TOP

Especifica registos selecionados com consultas SQL.

Sintaxe

SELECIONE [TODOS OS | | DISTINTOS | DISTINCTROW [TOP n [PERCENT]]
Da mesa

Uma declaração SELECT contendo estes predicados tem as seguintes partes:

Parte

Descrição

ALL

Assumiu que se não incluir um dos predicados. O motor de base de dados do Microsoft Access seleciona todos os registos que satisfaçam as condições da declaração SQL. Os dois exemplos seguintes são equivalentes e devolvem todos os registos da tabela dos Empregados:

SELECT ALL *
FROM Employees
ORDER BY EmployeeID;
SELECT *
FROM Employees
ORDER BY EmployeeID;

DISTINCT

Omite registos que contenham dados duplicados nos campos selecionados. Para serem incluídos nos resultados da consulta, os valores de cada campo listado na declaração SELECT devem ser únicos. Por exemplo, vários empregados listados numa tabela de Empregados podem ter o mesmo apelido. Se dois registos contiverem Smith no campo LastName, a seguinte declaração SQL devolve apenas um registo que contém Smith:

SELECT DISTINCT LastName
FROM Employees;

Se omitir a DISTINCT, esta consulta devolve os dois registos da Smith.

Se a cláusula SELECT contiver mais de um campo, a combinação de valores de todos os campos deve ser única para que um dado registo seja incluído nos resultados.

A saída de uma consulta que utiliza o DISTINCT não é atualizável e não reflete alterações subsequentes feitas por outros utilizadores.

DISTINCTROW

Omite dados baseados em registos duplicados inteiros, não apenas campos duplicados. Por exemplo, pode criar uma consulta que se junte às tabelas Clientes e Encomendas no campo CustomerID. A tabela Clientes não contém campos duplicados do CustomerID, mas a tabela Encomendas contém porque cada cliente pode ter muitas encomendas. A seguinte declaração sql mostra como pode usar a DISTINCTROW para produzir uma lista de empresas que têm pelo menos uma encomenda, mas sem quaisquer detalhes sobre essas encomendas:

SELECT DISTINCTROW CompanyName
FROM Customers INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER BY CompanyName;

Se omitir a DISTINCTROW, esta consulta produz várias linhas para cada empresa que tem mais de uma encomenda.

DISTINCTROW só tem um efeito quando seleciona campos de alguns, mas não de todos, das tabelas utilizadas na consulta. A DISTINCTROW é ignorada se a sua consulta inclui apenas uma tabela, ou se des output campos de todas as tabelas.

TOP n [PERCENT]

Devolve um determinado número de registos que caem na parte superior ou na parte inferior de um intervalo especificado por uma cláusula ORDER BY. Suponha que queira os nomes dos 25 melhores alunos da turma de 1994:

SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;

Se não incluir a cláusula ORDER BY, a consulta devolverá um conjunto arbitrário de 25 registos da tabela De Alunos que satisfazem a cláusula WHERE.

O predicado TOP não escolhe entre valores iguais. No exemplo anterior, se as médias de pontos de 25 e 26 mais altas forem as mesmas, a consulta devolverá 26 recordes.

Também pode utilizar a palavra por cento reservada para devolver uma determinada percentagem de registos que caem na parte superior ou na parte inferior de um intervalo especificado por uma cláusula ORDER BY. Suponha que, em vez dos 25 melhores alunos, quer os 10% inferiores da classe:

SELECT TOP 10 PERCENT
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage ASC;

O predicado ASC especifica uma devolução dos valores inferiores. O valor que segue o TOP deve ser um Inteiro não assinado.

O TOP não afeta se a consulta é ou não atualizável.

tabela

O nome da tabela a partir da qual são obtidos os registos.



Precisa de mais ajuda?

Aumente os seus conhecimentos do Office
Explore as formações
Seja o primeiro a obter novas funcionalidades
Adira ao Office Insider

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×