Orzeczenia ALL, DISTINCT, DISTINCTROW i TOP

Dotyczy
Access dla Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Te orzeczenia określają, które rekordy będą wybierane przez zapytanie SQL.

Składnia

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

Instrukcja SELECT zawierająca te orzeczenia składa się z następujących części:

Segment Opis
ALL Program Access zakłada ALL , że jeśli nie dołączysz innego orzeczenia. Aparat bazy danych programu Access wybiera wszystkie rekordy spełniające warunki w instrukcji SQL. Te przykłady są równoważne i zwracają wszystkie rekordy z tabeli Employees : SELECT ALL * FROM Employees ORDER BY EmployeeID; oraz SELECT * FROM Employees ORDER BY EmployeeID;
DISTINCT Pomija rekordy zawierające zduplikowane dane w wybranych polach. Aby uwzględnić rekord w wynikach, wartości dla każdego pola w instrukcji SELECT muszą być unikatowe. Na przykład kilku pracowników w Employees tabeli może mieć to samo nazwisko. Jeśli pole zawiera Smith dwa rekordy, zwraca SELECT DISTINCT LastName FROM Employees; tylko jeden rekord zawierający Smith.LastName Jeśli pominiesz DISTINCT, zapytanie zwróci oba Smith rekordy. Jeśli klauzula SELECT zawiera więcej niż jedno pole, kombinacja wartości ze wszystkich pól musi być unikatowa, aby rekord pojawił się w wynikach. Danych wyjściowych używającego DISTINCT zapytania nie można aktualizować i nie odzwierciedlają one późniejszych zmian wprowadzonych przez innych użytkowników.
DISTINCTROW Pomija dane oparte na duplikatach całych rekordów, a nie tylko na zduplikowanych polach. Można na przykład utworzyć zapytanie sprzęgające tabele Customers i Orders w CustomerID polu. Tabela Customers nie zawiera zduplikowanych pól, ale jest taka CustomerID sama Orders , ponieważ każdy klient może mieć wiele zamówień. SELECT DISTINCTROW CompanyName FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID ORDER BY CompanyName; Tworzy listę firm, które mają co najmniej jedno zamówienie, ale nie zawiera szczegółowych informacji o tych zamówieniach. Jeśli pominiesz DISTINCTROWten warunek, zapytanie wygeneruje kilka wierszy dla każdej firmy, która ma więcej niż jedno zamówienie. DISTINCTROW działa tylko w przypadku zaznaczenia pól z niektórych, ale nie wszystkich tabel używanych w zapytaniu. Program Access ignoruje, DISTINCTROW czy zapytanie obejmuje tylko jedną tabelę lub czy pola wyjściowe pochodzą ze wszystkich tabel.
TOP n [PERCENT] Zwraca określoną liczbę rekordów znajdujących się na początku lub na dole zakresu określonego w ORDER BY klauzuli. Załóżmy, że potrzebujesz nazwisk 25 najlepszych uczniów z rocznika 2003: SELECT TOP 25 FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage DESC; Jeśli klauzula nie zostanie dołączona ORDER BY , zapytanie zwróci dowolny zestaw 25 rekordów Students z tabeli, które spełniają warunki określone dla klauzuli WHERE . Orzeczenie TOP nie wybiera między równymi wartościami. W poprzednim przykładzie, jeśli średnie dwudziestu piątych i dwudziestych szóstych najwyższych ocen są takie same, zapytanie zwróci 26 rekordów. Słowa PERCENT zastrzeżonego można także użyć w celu zwrócenia procentu rekordów znajdujących się na początku lub na dole zakresu określonego w ORDER BY klauzuli. Jeśli na przykład potrzebujesz 10 procent dolnej części klasy, użyj polecenia SELECT TOP 10 PERCENT FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage ASC; Orzeczenie ASC zwraca najniższe wartości. Następująca po niej TOP wartość musi być liczbą całkowitą bez znaku. TOP Nie ma wpływu na możliwość aktualizowania zapytania.
table Nazwa tabeli, z której program Access pobiera rekordy.