Предикати ALL, DISTINCT, DISTINCTROW, TOP
Applies ToAccess для 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 EmployeesORDER BY EmployeeID;
SELECT *FROM EmployeesORDER BY EmployeeID;

DISTINCT

Не передає записи, які містять повторювані дані у вибраних полях. Для включення до результатів запиту значення для кожного поля, указаного в інструкції SELECT, мають бути унікальними. Наприклад, кілька працівників, перелічених у таблиці "Працівники", можуть мати однакові прізвища. Якщо в полі LastName містяться два записи Smith, наведена нижче інструкція SQL повертає лише один запис, який містить Ім'я Сміта:

SELECT DISTINCT LastNameFROM Employees;

Якщо пропустити DISTINCT, цей запит поверне обидва записи Smith.

Якщо речення SELECT містить кілька полів, поєднання значень з усіх полів має бути унікальним для певного запису для включення в результати.

Результати запиту, у якому використовується функція DISTINCT, не оновлюються та не відображають подальші зміни, внесені іншими користувачами.

DISTINCTROW

Не оминає дані на основі всіх повторюваних записів, а не лише повторюваних полів. Наприклад, можна створити запит, який об'єднує таблиці "Клієнти" та "Замовлення" в полі CustomerID. Таблиця "Клієнти" не містить повторюваних полів CustomerID, але таблиця "Замовлення" виконується, оскільки кожен клієнт може мати багато замовлень. У наведеній нижче інструкції SQL показано, як за допомогою функції DISTINCTROW створити список компаній, які мають принаймні одне замовлення, але без будь-яких подробиць про ці замовлення:

SELECT DISTINCTROW CompanyNameFROM Customers INNER JOIN OrdersON Customers.CustomerID = Orders.CustomerIDORDER BY CompanyName;

Якщо пропустити DISTINCTROW, цей запит створює кілька рядків для кожної компанії, яка має кілька замовлень.

ФУНКЦІЯ DISTINCTROW діє, лише коли ви вибираєте поля з деяких (але не всіх) таблиць, які використовуються в запиті. Функція DISTINCTROW ігнорується, якщо запит містить лише одну таблицю або виводите поля з усіх таблиць.

TOP n [PERCENT]

Повертає певну кількість записів, які перебувають у верхній або нижній частині діапазону, визначеного реченням ORDER BY. Припустімо, ви хочете, щоб імена 25 кращих учнів класу 1994 року:

SELECT TOP 25FirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage DESC;

Якщо не додати речення ORDER BY, запит поверне довільний набір із 25 записів із таблиці "Студенти", які відповідають реченню WHERE.

Предикат TOP не вибирає рівні значення. У попередньому прикладі, якщо двадцять п'ятий і двадцять шостий середні показники найвищого класу однакові, запит поверне 26 записів.

Зарезервоване слово PERCENT також можна використовувати, щоб повернути певний відсоток записів, які перебувають у верхній або нижній частині діапазону, визначеного реченням ORDER BY. Припустімо, що замість 25 найкращих студентів потрібно отримати 10 відсотків класу знизу:

SELECT TOP 10 PERCENTFirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage ASC;

Предикат ASC визначає повернення нижніх значень. Значення після top має бути цілим числом без підпису.

Top не впливає на те, чи можна оновити запит.

таблиця

Ім’я таблиці, з якої буде отримано записи.

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.