ALL, DISTINCT, DISTINCTROW, TOP, predikater
Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Angir poster som er valgt med SQL-spørringer.

Syntaks

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]FROM-tabell

En SELECT-setning som inneholder disse predikatene, har følgende deler:

Del

Beskrivelse

ALL

Antas hvis du ikke inkluderer ett av predikatene. Microsoft Access-databasemotoren velger alle postene som oppfyller betingelsene i SQL-setningen. Følgende to eksempler er tilsvarende og returnerer alle postene fra Ansatte-tabellen:

SELECT ALL *FROM EmployeesORDER BY EmployeeID;
SELECT *FROM EmployeesORDER BY EmployeeID;

DISTINCT

Utelater poster som inneholder dupliserte data i de valgte feltene. Hvis du vil inkluderes i resultatene av spørringen, må verdiene for hvert felt som er oppført i SELECT-setningen, være unike. Flere ansatte som er oppført i en Ansatte-tabell, kan for eksempel ha samme etternavn. Hvis to poster inneholder Smith i LastName-feltet, returnerer følgende SQL-setning bare én post som inneholder Smith:

SELECT DISTINCT LastNameFROM Employees;

Hvis du utelater DISTINCT, returnerer denne spørringen begge Smith-postene.

Hvis SELECT-setningen inneholder mer enn ett felt, må kombinasjonen av verdier fra alle felt være unik for at en gitt post skal inkluderes i resultatene.

Utdataene for en spørring som bruker DISTINCT, kan ikke oppdateres og gjenspeiler ikke etterfølgende endringer gjort av andre brukere.

DISTINCTROW

Utelater data basert på hele dupliserte poster, ikke bare dupliserte felt. Du kan for eksempel opprette en spørring som føyer sammen tabellene Kunder og Ordrer i Feltet Kunde-ID. Kunder-tabellen inneholder ingen dupliserte CustomerID-felt, men ordretabellen gjør det fordi hver kunde kan ha mange ordrer. Følgende SQL-setning viser hvordan du kan bruke DISTINCTROW til å lage en liste over firmaer som har minst én ordre, men uten detaljer om disse ordrene:

SELECT DISTINCTROW CompanyNameFROM Customers INNER JOIN OrdersON Customers.CustomerID = Orders.CustomerIDORDER BY CompanyName;

Hvis du utelater DISTINCTROW, produserer denne spørringen flere rader for hvert selskap som har mer enn én ordre.

DISTINCTROW har bare en effekt når du velger felt fra noen, men ikke alle, av tabellene som brukes i spørringen. DISTINCTROW ignoreres hvis spørringen bare inneholder én tabell, eller hvis du sender felt fra alle tabeller.

TOP n [PROSENT]

Returnerer et bestemt antall poster som faller øverst eller nederst i et område angitt av en ORDER BY-setningsdel. La oss si at du vil ha navnene på de 25 beste elevene fra klassen i 1994:

SELECT TOP 25FirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage DESC;

Hvis du ikke inkluderer ORDER BY-setningsdelen, returnerer spørringen et vilkårlig sett med 25 poster fra Students-tabellen som oppfyller WHERE-setningsdelen.

TOP-predikatet velger ikke mellom like verdier. I det foregående eksemplet, hvis det tjuefemte og tjuesjette høyeste karakterpoenggjennomsnittet er det samme, returnerer spørringen 26 poster.

Du kan også bruke det reserverte ordet PROSENT for å returnere en bestemt prosentandel poster som faller øverst eller nederst i et område som er angitt av en ORDER BY-setningsdel. La oss si at i stedet for de 25 beste elevene, vil du ha de nederste 10 prosentene av klassen:

SELECT TOP 10 PERCENTFirstName, LastNameFROM StudentsWHERE GraduationYear = 2003ORDER BY GradePointAverage ASC;

ASC-predikatet angir en retur av bunnverdier. Verdien som følger TOP, må være et heltall som ikke er signert.

TOP påvirker ikke om spørringen kan oppdateres eller ikke.

tabell

Navnet på tabellen som postene er hentet fra.

Trenger du mer hjelp?

Vil du ha flere alternativer?

Utforsk abonnementsfordeler, bla gjennom opplæringskurs, finn ut hvordan du sikrer enheten og mer.

Fellesskap hjelper deg med å stille og svare på spørsmål, gi tilbakemelding og høre fra eksperter med stor kunnskap.