Predikati ALL, DISTINCT, DISTINCTROW in TOP

Predikati ALL, DISTINCT, DISTINCTROW in TOP

Navede zapise, ki so izbrani s poizvedbo Structured Query Language (SQL).

Sintaksa

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

Izjava SELECT s temi predikati je sestavljena iz teh delov:

Del

Opis

ALL

Če predikata ne uporabite, mehanizem zbirke podatkov programa Microsoft Access izbere vse zapise, ki ustrezajo pogojem v SQL niz/izjava. Ta dva primera sta enakovredna in iz tabele »Employees« vrneta vse zapise:

SELECT ALL * FROM Employees ORDER BY EmployeeID;

SELECT * FROM Employees ORDER BY EmployeeID;

DISTINCT

Izpusti zapise s podvojenimi podatki v izbranih poljih. Če želite vključiti vrednosti v rezultate poizvedbe, morajo biti vrednosti v vseh poljih, ki so navedena v izjavi SELECT, enolične. Več zaposlenih, ki so navedeni v tabeli »Employees«, lahko ima na primer isti priimek. Če sta v polju »LastName« dva zapisa »Smith«, ta izjava SQL vrne samo en zapis »Smith«:

SELECT DISTINCT LastName
FROM Employees;

Če izpustite DISTINCT, poizvedba vrne oba zapisa »Smith«.

Če je v stavku SELECT več kot eno polje, mora biti kombinacija vrednosti iz vseh polj za dani zapis enolična, da bo vključena v rezultate.

Izhoda poizvedbe, ki uporablja DISTINCT, ni mogoče posodobiti in ne odraža poznejših sprememb, ki jih naredijo drugi uporabniki.

DISTINCTROW

Izpusti podatke, ki temeljijo na zapisih, ki so v celoti podvojeni, in ne le na podvojenih poljih. Ustvarite lahko na primer poizvedbo, ki združi tabeli »Customers« in »Orders« v polju »CustomerID«. V tabeli »Customers« ni podvojenih polj »CustomerID«, v tabeli »Orders« pa so, saj ima lahko posamezna stranka več naročil. V tej izjavi SQL je prikazano, kako uporabiti DISTINCTROW za izdelavo seznama podjetij, ki imajo najmanj eno naročilo, vendar brez prikazanih podrobnosti o teh naročilih:

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

Če izpustite DISTINCTROW, bo ta poizvedba ustvarila več vrstic za vsako podjetje, ki ima več kot eno naročilo.

DISTINCTROW se bo izvedla samo, če izberete polja iz nekaterih, vendar ne vseh tabel, ki so uporabljene v poizvedbi. DISTINCTROW bo prezrta, če je v poizvedbi samo ena tabela ali če prikažete polja iz vseh tabel.

TOP n [PERCENT]

Vrne določeno število zapisov, ki so na vrhu ali dnu obsega, navedenem v stavku ORDER BY. Na ta način na primer poiščete imena 25 najboljših študentov leta 1994:

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

Če stavka ORDER BY ne uporabite, poizvedba vrne poljubni nabor 25 zapisov iz tabele »Students«, ki ustrezajo pogojem stavka WHERE.

Predikat TOP ne izbira med enakimi vrednostmi. Če bi bilo v zgornjem primeru petindvajseto in šestindvajseto najboljše povprečje ocen enako, bi poizvedba vrnila 26 zapisov.

Če želite, da bo vrnjen določen odstotek zapisov, ki so na vrhu ali dnu obsega, navedenem v stavku ORDER BY, lahko uporabite tudi rezervirano besedo PERCENT. Na ta način namesto 25 najboljših študentov poiščete na primer 10 odstotkov najslabših študentov letnika:

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

Predikat ASC navede vračanje vrednosti, ki so na dnu obsega. Vrednost, ki sledi TOP, mora biti Podatkovni tip »Celo število« brez predznaka.

TOP ne vpliva na to, ali je poizvedbo mogoče posodobiti ali ne.

tabela

Ime tabele, iz katere so vrnjeni zapisi.



Razširite svoja znanja
Oglejte si izobraževanje
Prvi dobite nove funkcije
Pridružite se programu Office Insider

Vam je bila informacija v pomoč?

Zahvaljujemo se vam za povratne informacije.

Zahvaljujemo se vam za povratne informacije. Videti je, da bi vam prišla prav pomoč enega od naših Officeovih agentov za podporo.

×