Получите полную информацию о предикатах 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 таблице могут иметь одинаковые фамилии. Если в поле содержатся Smith две записи, SELECT DISTINCT LastName FROM Employees; возвращается только одна запись, содержащая Smith.LastName Если опустить DISTINCT, запрос возвращает обе Smith записи. SELECT Если предложение содержит несколько полей, сочетание значений из всех полей должно быть уникальным, чтобы запись отображалась в результатах. Выходные данные запроса, который использует DISTINCT , не обновляются и не отражают последующие изменения, внесенные другими пользователями.
DISTINCTROW Пропускает данные, основанные на всех повторяющихся записях, а не только на повторяющихся полях. Например, можно создать запрос, который объединяет Customers таблицы и в OrdersCustomerID поле. В 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 извлекает записи.