ALL-, DISTINCT-, DISTINCTROW- ja TOP-predikaatit
Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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 EmployeesORDER BY EmployeeID;
SELECT *FROM EmployeesORDER 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 LastNameFROM 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 kokonaisiin tietueiden kaksoiskappaleisiin perustuvat tiedot, ei pelkästään kenttien kaksoiskappaleita. Voit esimerkiksi luoda kyselyn, joka yhdistää Asiakkaat- ja Tilaukset-taulukot Asiakastunnus-kenttään. Asiakkaat-taulukossa ei ole asiakastunnuskenttien kaksoiskappaleita, mutta Tilaukset-taulukossa on, koska kullakin asiakkaalla voi olla useita tilauksia. Seuraavassa SQL-lausekkeessa näytetään, miten voit käyttää DISTINCTROW-funktiota sellaisten yritysten luettelon tuottamiseen, joilla on vähintään yksi tilaus, mutta joilla ei ole mitään tietoja näistä tilauksista:

SELECT DISTINCTROW CompanyNameFROM Customers INNER JOIN OrdersON Customers.CustomerID = Orders.CustomerIDORDER 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 25FirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER 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 PERCENTFirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER 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.

Tarvitsetko lisäohjeita?

Haluatko lisää vaihtoehtoja?

Tutustu tilausetuihin, selaa harjoituskursseja, opi suojaamaan laitteesi ja paljon muuta.

Osallistumalla yhteisöihin voit kysyä kysymyksiä ja vastata niihin, antaa palautetta sekä kuulla lisää asiantuntijoilta, joilla on runsaasti tietoa.