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

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

Указує записи, відібрані за допомогою Мова структурованих запитів (SQL)-запитів.

Синтаксис

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
FROM таблиця

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

Частина

Опис

ALL

Передбачено, якщо один із предикатів не включено. Обробник баз даних Microsoft Access обирає всі записи, які відповідають умовам інструкція/оператор SQL. Наведені два приклади є еквівалентними та повертають всі записи з таблиці «Employees»:

SELECT ALL *
FROM Employees
ORDER BY EmployeeID;
SELECT *
FROM Employees
ORDER BY EmployeeID;

DISTINCT

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

SELECT DISTINCT LastName
FROM Employees;

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

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

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

DISTINCTROW

Пропускає дані повністю повторюваних записів, а не лише повторюваних полів. Наприклад, можна створити запит, який об’єднує таблиці «Customers» і «Orders» у полі «CustomerID». Таблиця «Customers» не містить повторюваних полів «CustomerID», проте таблиця «Orders» містить повторювані поля, оскільки кожен клієнт може мати багато замовлень. Описаний нижче SQL-оператор показує спосіб використання предиката DISTINCTROW для створення списку компаній, які мають принаймні одне замовлення без відомостей про ці замовлення:

SELECT DISTINCTROW CompanyName
FROM Customers INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER BY CompanyName;

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

Предикат DISTINCTROW діє, лише якщо вибрано поля з певних, але не всіх, використаних у запиті таблиць. Предикат DISTINCTROW буде проігноровано, якщо запит містить лише одну таблицю, або якщо виводяться поля з усіх таблиць.

TOP n [PERCENT]

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

SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;

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

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

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

SELECT TOP 10 PERCENT
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage ASC;

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

Предикат TOP не впливає на можливість оновлення запиту.

таблиця

Ім'я таблиці, записи якої отримуються.



Отримуйте нові функції раніше за інших
Приєднайтеся до оцінювачів Office

Ця інформація корисна?

Дякуємо за ваш відгук!

Дякуємо за відгук! Схоже, вам може стати в нагоді допомога одного з наших спеціалістів служби підтримки Office, з яким ми вас можемо з’єднати.

×