ALL-, DISTINCT-, DISTINCTROW- ja TOP-predikaatit

ALL-, DISTINCT-, DISTINCTROW- ja TOP-predikaatit

Määrittää SQL-kyselyillä valitut tietueet.

Syntaksi

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

Nämä predikaatit sisältävässä SELECT-komennossa on seuraavat osat:

Osa

Kuvaus

ALL

Oletus, jos et käytä jotakin predikaattia. Microsoft Access -tietokantamoduuli valitsee kaikki SQL-lausekkeen ehdot täyttävät tietueet. Seuraavat kaksi esimerkkiä vastaavat tosiaan ja palauttavat kaikki tietueet Employees-taulukosta:

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

DISTINCT

Jättää pois tietueet, jotka sisältävät samat arvot valituissa kentissä. Tietue otetaan mukaan kyselyn tuloksiin vain, jos sillä on muihin tietueisiin verrattuna yksilölliset arvot SELECT-lausekkeessa määritetyissä kentissä. Esimerkiksi Employees-taulussa usealla työntekijällä voi olla sama sukunimi. Jos kahdessa tietueessa on Sukunimi-kentän arvona Salo, seuraava SQL-lauseke palauttaa vain yhden Salo-tietueen:

SELECT DISTINCT LastName
FROM Employees;

Jos jätät DISTINCT-predikaatin pois, kysely palauttaa molemmat Salo-tietueet.

Jos SELECT-lauseke sisältää enemmän kuin yhden kentän, kukin kaikkien kenttien arvoyhdistelmä otetaan mukaan kyselyn tuloksiin vain kerran.

DISTINCT-predikaattia käyttävää kyselyä ei voi päivittää eikä se näytä muiden käyttäjien myöhemmin tekemiä muutoksia.

DISTINCTROW

Jättää pois kaikki kokonaisten tietueiden kaksoiskappaleet, ei pelkästään kenttien kaksoiskappaleita. Voisit tehdä esimerkiksi kyselyn, joka liittää Customers- ja Orders-taulun tietueet CustomerID-kentän mukaan. Customers-taulukko ei sisällä tietueita, joilla on sama arvo CustomerID-kentässä. Orders-taulussa tällaisia tietueita kuitenkin on, sillä kullakin asiakkaalla voi olla useita tilauksia. Seuraavasta SQL-lausekkeesta näet, miten saat DISTINCTROW-predikaatin avulla luettelon yrityksistä, joilla on vähintään yksi tilaus, muttei mitään tietoja näistä tilauksista:

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

Jos jätät DISTINCTROW-predikaatin pois, tämä kysely näyttää useita rivejä kullekin yritykselle, joilla on enemmän kuin yksi tilaus.

DISTINCTROW vaikuttaa vain, kun valitset kenttiä joistakin mutta et kaikista kyselyssä käytettävistä tauluista. DISTINCTROW ohitetaan, jos kysely sisältää vain yhden taulukon tai jos otat mukaan kenttiä kaikista tauluista.

TOP n [PERCENT]

Palauttaa tietyn määrän tietueita, jotka ovat ORDER BY -lausekkeen määrittämän alueen ala- tai yläpäässä. Oletetaan, että haluat arvosanoiltaan 25 parhaan oppilaan nimet vuodelta 1994:

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

Jos et käytä ORDER BY -lauseketta, kysely palauttaa Students-taulusta satunnaisen 25 tietueen joukon, joka täyttää WHERE-lausekkeen ehdot.

TOP-predikaatti ei valitse jotakin tiettyä tietuetta, jos niiden arvot täsmäävät. Jos 25:nneksi ja 26:nneksi korkein arvosana on edellisessä esimerkissä sama, kysely palauttaa 26 tietuetta.

Voit myös käyttää varattua PERCENT-sanaa, jos haluat palauttaa tietyn prosenttiosuuden tietueista, jotka ovat ORDER BY -lausekkeella määritetyn alueen ala- tai yläpäässä. Oletetaan, että haluat valita 25 parhaan arvosanan saaneiden oppilaiden sijaan oppilaat, joiden arvosana on heikoimman 10 prosentin joukossa:

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

ASC-predikaattia käytetään, jos halutaan palauttaa alimmat arvot. TOP-predikaattia seuraavan arvon on oltava etumerkitön kokonaisluku.

TOP ei vaikuta kyselyn päivitettävyyteen.

taulu

Sen taulukon nimi, josta tietueet noudetaan.



Kehitä taitojasi
Tutustu koulutusmateriaaliin
Saat uudet ominaisuudet ensimmäisten joukossa
Liity Office Insider -käyttäjiin

Oliko näistä tiedoista hyötyä?

Kiitos palautteesta!

Kiitos palautteestasi! Näyttää siltä, että Office-tukiedustajamme avusta voi olla sinulle hyötyä.

×