Predikati ALL, DISTINCT, DISTINCTROW in TOP
Applies ToAccess 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 EmployeesORDER BY EmployeeID;
SELECT *FROM EmployeesORDER 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 LastNameFROM Employees;

Č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 CompanyNameFROM Customers INNER JOIN OrdersON Customers.CustomerID = Orders.CustomerIDORDER 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:

SELECT TOP 25FirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER 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:

SELECT TOP 10 PERCENTFirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER 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.

Ali potrebujete dodatno pomoč?

Ali želite več možnosti?

Raziščite ugodnosti naročnine, prebrskajte izobraževalne tečaje, preberite, kako zaščitite svojo napravo in še več.

Skupnosti vam pomagajo postaviti vprašanja in odgovoriti nanje, posredovati povratne informacije in prisluhniti strokovnjakom z bogatim znanjem.