Predikáty ALL, DISTINCT, DISTINCTROW, TOP

Predikáty ALL, DISTINCT, DISTINCTROW, TOP

Špecifikuje záznamy vybraté dotazmiSQL (Structured Query Language).

Syntax

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
FROM tabuľka

Príkaz SELECT, ktorý obsahuje tieto predikáty, sa skladá z nasledovných častí:

Časť

Popis

ALL

Predpokladá sa v prípade, že nezahrniete jeden z predikátov. Databázový mechanizmus programu Microsoft Access vyberie všetky záznamy, ktoré spĺňajú podmienky v reťazec alebo príkaz SQL. Nasledovné dva príklady sú zhodné a vrátia všetky záznamy z tabuľky Zamestnanci:

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

DISTINCT

Vynechá záznamy obsahujúce vo vybraných poliach duplicitné údaje. Aby boli zahrnuté vo výsledkoch dotazu, musia byť hodnoty pre každé pole uvedené v príkaze SELECT. Napríklad, viacerí zamestnanci uvedení v tabuľke Zamestnanci môžu mať rovnaké priezvisko. Ak v poli Priezvisko obsahujú dva záznamy priezvisko Smith, nasledovný príkaz SQL vráti iba jeden záznam, ktorý obsahuje Smith:

SELECT DISTINCT LastName
FROM Employees;

Ak vynecháte príkaz DISTINCT, vráti tento dotaz obidva záznamy Smith.

Ak klauzula SELECT obsahuje viac než jedno pole, musí byť kombinácia hodnôt zo všetkých polí pre daný záznam jedinečná, aby bola zahrnutá vo výsledkoch.

Výstup dotazu, ktorý používa klauzulu DISTINCT, sa nedá aktualizovať a neodzrkadľuje ďalšie zmeny vykonané inými používateľmi.

DISTINCTROW

Vynechá údaje založené na celých duplicitných záznamoch, nielen na duplicitných poliach. Mohli by ste napríklad vytvoriť tabuľku, ktorá spája tabuľky Zákazníci a Objednávky na poli IdentifikáciaZákazníka. Tabuľka Zákazníci neobsahuje žiadne duplicitné polia IdentifikáciaZákazníka, ale tabuľka Objednávky ich obsahuje, pretože každý zákazník môže mať veľa objednávok. Nasledovný príkaz SQL ukazuje, ako sa dá používať príkaz DISTINCTROW na vytvorenie zoznamu spoločností, ktoré majú aspoň jednu objednávku, ale bez podrobností o týchto objednávkach:

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

Ak vynecháte príkaz DISTINCTROW, vytvorí tento dotaz viaceré riadky pre každú spoločnosť, ktorá má viac než jednu objednávku.

Príkaz DISTINCTROW má účinok iba vtedy, keď vyberiete polia z niektorých, ale nie všetkých tabuliek použitých v dotaze. Príkaz DISTINCTROW je ignorovaný, keď dotaz obsahuje iba jednu tabuľku alebo ak vykonávate výstup polí zo všetkých tabuliek.

TOP n [PERCENT]

Vráti určitý počet záznamov, ktoré spadajú do horného alebo dolného rozpätia určeného klauzulou ORDER BY. Predpokladajme, že chcete získať mená najlepších 25 študentov z ročníka 1994:

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

Ak nezahrniete klauzulu ORDER BY, dotaz vráti z tabuľky Študenti ľubovoľnú množinu 25 záznamov, ktoré vyhovujú klauzule WHERE.

Predikát TOP nevyberá medzi rovnakými hodnotami. Ak sú v predchádzajúcom príklade na 25. a 26. mieste rovnaké priemery bodov, dotaz vráti 26 záznamov.

Môžete tiež použiť rezervované slovo PERCENT na vrátane istého percenta záznamov, ktoré spadajú do horného alebo dolného rozpätia určeného klauzulou ORDER BY. Predpokladajme, že namiesto najlepších 25 študentov chcete získať mená spodných 10 percent ročníka:

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

Predikát ASC špecifikuje vrátenie spodných hodnôt. Hodnotou, ktorá nasleduje za predikátom TOP, musí byť nepodpísané typ údajov Integer.

Predikát TOP neovplyvňuje možnosť aktualizácie dotazu.

tabuľka

Názov tabuľky, z ktorej sú načítané záznamy.



Rozšírte svoje zručnosti
Preskúmať školenie
Buďte medzi prvými, ktorí získajú nové funkcie
Pridajte sa k insiderom pre Office

Boli tieto informácie užitočné?

Ďakujeme za vaše pripomienky!

Ďakujeme vám za pripomienky. Pravdepodobne vám pomôže, ak vás spojíme s pracovníkom podpory pre Office.

×