Получите полную информацию о предикатах ALL, DISTINCT, DISTINCTROW и TOP в Access, определяющих записи, выбираемые с SQL-запросов, а также об их синтаксисе.

Применяется к
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Используйте эти предикаты, чтобы указать, какие записи выбирает SQL-запрос.

Синтаксис

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

Инструкция SELECT , содержащая эти предикаты, состоит из следующих частей:

Часть Описание
ALL Access предполагает ALL , что вы не добавили еще один предикат. Ядро СУБД Access выбирает все записи, которые удовлетворяют условиям инструкции SQL. Эти примеры эквивалентны и возвращают все записи из таблицы Employees : SELECT ALL * FROM Employees ORDER BY EmployeeID; и SELECT * FROM Employees ORDER BY EmployeeID;
DISTINCT Исключает записи, содержащие повторяющиеся данные в выбранных полях. Чтобы включить запись в результаты, значения для каждого поля SELECT инструкции должны быть уникальными. Например, несколько сотрудников в Employees таблице могут иметь одинаковые фамилии. Если в поле содержатся SmithLastName две записи, SELECT DISTINCT LastName FROM Employees; возвращается только одна запись, содержащая Smith. Если этот параметр опущен, DISTINCTзапрос возвращает обе Smith записи. SELECT Если предложение содержит несколько полей, сочетание значений из всех полей должно быть уникальным, чтобы запись появилась в результатах. Выходные данные запроса, который используется DISTINCT , не обновляются и не отражают более поздние изменения, внесенные другими пользователями.
DISTINCTROW Пропуск данных на основе повторяющихся записей, а не только повторяющихся полей. Например, можно создать запрос, соединяющий таблицы Customers and Orders в поле.CustomerID В Customers таблице нет повторяющихся CustomerID полей, но они Orders есть, потому что у каждого клиента может быть много заказов. SELECT DISTINCTROW CompanyName FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID ORDER BY CompanyName; создает список компаний, у которых есть хотя бы один заказ, но не содержит сведений об этих заказах. Если этот параметр опущен, DISTINCTROWзапрос создаст несколько строк для каждой компании, имеющей более одного заказа. DISTINCTROW действует только при выборе полей из некоторых, но не всех таблиц, используемых в запросе. Access пропускает DISTINCTROW запрос, содержит ли запрос только одну таблицу или выводит поля из всех таблиц.
TOP n [PERCENT] Возвращает определенное число записей, попадающих в верхнюю или нижнюю часть диапазона, указанного предложением ORDER BY . Предположим, вам нужны имена 25 лучших студентов выпуска 2003 года: SELECT TOP 25 FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage DESC; Если предложение не включено ORDER BY , запрос возвращает произвольный набор из 25 записей из Students таблицы, удовлетворяющих предложению WHERE . Предикат TOP не выбирает между равными значениями. В приведенном выше примере, если средние баллы за двадцать пятый и двадцать шестой баллы по высшей школе совпадают, запрос возвращает 26 записей. Зарезервированное PERCENT слово можно также использовать для возвращения процента записей, попадающих в верхнюю или нижнюю часть диапазона, указанного предложением ORDER BY . Например, если требуется определить последние 10 процентов класса, используйте SELECT TOP 10 PERCENT FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage ASC; Предикат ASC возвращает минимальные значения. Приведенное ниже TOP значение должно быть целым числом без знака. TOP Не влияет на возможность обновления запроса.
table Имя таблицы, из которой Access извлекает записи.