Predikati ALL, DISTINCT, DISTINCTROW in TOP

Velja za
Access za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Določa zapise, izbrane s poizvedbami SQL.

Sintaksa

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
TABELA FROM

Izjava SELECT, ki vsebuje te predikate, ima te dele:

Del Opis
ALL Privzame se, če ne vključite enega od predikatov. Mehanizem Microsoft Accessove zbirke podatkov izbere vse zapise, ki ustrezajo pogojem v izjavi SQL. Ta dva primera sta enakovredna in vrneta vse zapise iz tabele »Zaposleni«:SELECT ALL *
FROM Employees
ORDER BY EmployeeID;
IZBERITE*
FROM Employees
ORDER BY EmployeeID;
DISTINCT Izpustite zapise, ki v izbranih poljih vsebujejo podvojene podatke. Če želite biti vključeni v rezultate poizvedbe, morajo biti vrednosti za vsako polje, navedeno v izjavi SELECT, enolične. Na primer, več zaposlenih, ki so navedeni v tabeli zaposlenih, ima lahko isti priimek. Če dva zapisa vsebujeta Smith v polju Priimek, spodnja izjava SQL vrne le en zapis, ki vsebuje Smith:
SELECT DISTINCT LastName
FROM Zaposleni;
Če izpustite distinct, ta poizvedba vrne oba zapisa Smith.
Če stavek SELECT vsebuje več kot eno polje, mora biti kombinacija vrednosti iz vseh polj enolična, če želite, da je dani zapis vključen v rezultate.
Rezultata poizvedbe, ki uporablja funkcijo DISTINCT, ni mogoče posodobiti in ne odraža poznejših sprememb, ki so jih naredili drugi uporabniki.
DISTINCTROW Izpustite podatke, ki temeljijo na celotnih podvojenih zapisih, ne le na podvojenih poljih. Ustvarite lahko na primer poizvedbo, ki v polju »ID Stranke« združi tabeli »Stranke« in »Naročila«. V tabeli »Stranke« ni podvojenih polj »ID Stranke«, tabela »Naročila« pa jo vsebuje, ker ima lahko vsaka stranka več naročil. Spodnja izjava SQL prikazuje, kako lahko s funkcijo DISTINCTROW ustvarite seznam podjetij, ki imajo vsaj eno naročilo, vendar brez podrobnosti o teh naročilih:
SELECT DISTINCTROW CompanyName
FROM Customers INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER BY CompanyName;
Če izpustite distinctrow, ta poizvedba ustvari več vrstic za vsako podjetje, ki ima več naročil.
Funkcija DISTINCTROW ima učinek le, če izberete polja iz nekaterih tabel, ki so uporabljene v poizvedbi, vendar ne vseh. FUNKCIJA DISTINCTROW je prezrta, če poizvedba vključuje le eno tabelo ali če izhodna polja iz vseh tabel.
TOP n [PERCENT] Vrne določeno število zapisov, ki so na vrhu ali dnu obsega, določenega s stavkom ORDER BY. Denimo, da želite imena 25 najboljših študentov iz razreda 1994:
IZBERITE ZGORNJIH 25
Ime, priimek
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;
Če ne vključite stavka ORDER BY, bo poizvedba vrnila poljubni nabor 25 zapisov iz tabele Študenti, ki izpolnjujejo stavek WHERE.
Predikat TOP ne izbira med enakimi vrednostmi. Če sta v prejšnjem primeru povprečja 25. in 26. najvišjega razreda enaka, bo poizvedba vrnila 26 zapisov.
Z rezervirano besedo PERCENT lahko tudi vrnete določen odstotek zapisov, ki so na vrhu ali dnu obsega, določenega s stavkom ORDER BY. Denimo, da namesto 25 najboljših študentov želite spodnjih 10 odstotkov razreda:
IZBERITE ZGORNJIH 10 ODSTOTKOV
Ime, priimek
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage ASC;
Predikat ASC določa vrnitev spodnjih vrednosti. Vrednost, ki sledi ukazu TOP, mora biti nepodpisano celo število.
TOP ne vpliva na to, ali je poizvedbo mogoče posodobiti ali ne.
tabela Ime tabele, iz katerih pridobivate zapise.