Предикати ALL, DISTINCT, DISTINCTROW, TOP

Застосовується до
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Визначає записи, вибрані за допомогою запитів SQL.

Синтаксис

SELECT [УСІ | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
ТАБЛИЦЯ FROM

Інструкція SELECT, що містить ці предикати, складається з таких частин:

Частина Опис
ALL Припускається, що якщо ви не включите один із предикатів. Обробник баз даних Microsoft Access вибирає всі записи, які відповідають умовам в інструкції SQL. Наведені нижче два приклади еквівалентні та повертають всі записи з таблиці "Працівники":SELECT ALL *
FROM Employees
ORDER BY EmployeeID;
ВИБЕРІТЬ*
FROM Employees
ORDER BY EmployeeID;
DISTINCT Не передає записи, які містять повторювані дані у вибраних полях. Для включення до результатів запиту значення для кожного поля, указаного в інструкції SELECT, мають бути унікальними. Наприклад, кілька працівників, перелічених у таблиці "Працівники", можуть мати однакові прізвища. Якщо в полі LastName містяться два записи Smith, наведена нижче інструкція SQL повертає лише один запис, який містить Ім'я Сміта:
SELECT DISTINCT LastName
FROM Працівників;
Якщо пропустити DISTINCT, цей запит поверне обидва записи Smith.
Якщо речення SELECT містить кілька полів, поєднання значень з усіх полів має бути унікальним для певного запису для включення в результати.
Результати запиту, у якому використовується функція DISTINCT, не оновлюються та не відображають подальші зміни, внесені іншими користувачами.
DISTINCTROW Не оминає дані на основі всіх повторюваних записів, а не лише повторюваних полів. Наприклад, можна створити запит, який об'єднує таблиці "Клієнти" та "Замовлення" в полі CustomerID. Таблиця "Клієнти" не містить повторюваних полів CustomerID, але таблиця "Замовлення" виконується, оскільки кожен клієнт може мати багато замовлень. У наведеній нижче інструкції SQL показано, як за допомогою функції DISTINCTROW створити список компаній, які мають принаймні одне замовлення, але без будь-яких подробиць про ці замовлення:
SELECT DISTINCTROW CompanyName
ЗАМОВЛЕННЯ ВІД КЛІЄНТІВ INNER JOIN
ON Customers.CustomerID = Orders.CustomerID
ORDER BY CompanyName;
Якщо пропустити DISTINCTROW, цей запит створює кілька рядків для кожної компанії, яка має кілька замовлень.
ФУНКЦІЯ DISTINCTROW діє, лише коли ви вибираєте поля з деяких (але не всіх) таблиць, які використовуються в запиті. Функція DISTINCTROW ігнорується, якщо запит містить лише одну таблицю або виводите поля з усіх таблиць.
TOP n [PERCENT] Повертає певну кількість записів, які перебувають у верхній або нижній частині діапазону, визначеного реченням ORDER BY. Припустімо, ви хочете, щоб імена 25 кращих учнів класу 1994 року:
ВИБЕРІТЬ TOP 25
Ім'я, прізвище
ВІД студентів
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;
Якщо не додати речення ORDER BY, запит поверне довільний набір із 25 записів із таблиці "Студенти", які відповідають реченню WHERE.
Предикат TOP не вибирає рівні значення. У попередньому прикладі, якщо двадцять п'ятий і двадцять шостий середні показники найвищого класу однакові, запит поверне 26 записів.
Зарезервоване слово PERCENT також можна використовувати, щоб повернути певний відсоток записів, які перебувають у верхній або нижній частині діапазону, визначеного реченням ORDER BY. Припустімо, що замість 25 найкращих студентів потрібно отримати 10 відсотків класу знизу:
ВИБРАТИ ПЕРШІ 10 ВІДСОТКІВ
Ім'я, прізвище
ВІД студентів
WHERE GraduationYear = 2003
ORDER BY GradePointAverage ASC;
Предикат ASC визначає повернення нижніх значень. Значення після top має бути цілим числом без підпису.
Top не впливає на те, чи можна оновити запит.
таблиця Ім’я таблиці, з якої буде отримано записи.