Prædikaterne ALL, DISTINCT, DISTINCTROW og TOP
Applies ToAccess til Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Angiver poster, der er markeret med SQL-forespørgsler.

Syntaks

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

En SELECT-sætning, der indeholder disse prædikater, består af følgende dele:

Del

Beskrivelse

ALL

Dette antages, hvis du ikke medtager en af prædikater. Microsoft Access-databaseprogrammet vælger alle de poster, der opfylder betingelserne i SQL-sætningen. Følgende to eksempler er ækvivalente og returnere alle poster fra tabellen Medarbejdere:

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

DISTINCT

Udelader poster, der indeholder duplikerede data i de markerede felter. For at blive medtaget i resultaterne af forespørgslen skal værdierne for hvert felt, der er angivet i SELECT-sætningen, være entydige. Flere medarbejdere, der er angivet i tabellen Medarbejdere, kan f.eks, have samme efternavn. Hvis to poster indeholder Smith i feltet Efternavn, returnerer følgende SQL-sætning kun én post, der indeholder Smith:

SELECT DISTINCT LastNameFROM Employees;

Hvis du udelader DISTINCT, returnerer denne forespørgsel begge Smith-poster.

Hvis delsætningen SELECT indeholder mere end ét felt, skal kombinationen af værdier fra alle felter være entydig, hvis en given post skal medtages i resultaterne.

Output fra en forespørgsel, der bruger DISTINCT, kan ikke opdateres og afspejler ikke efterfølgende ændringer, der er foretaget af andre brugere.

DISTINCTROW

Udelader data, der er baseret på hele dublerede poster, ikke kun dublerede felter. Du kan f.eks. oprette en forespørgsel, der forbinder tabellerne Kunder og Ordrer i feltet Kunde-id. Tabellen Kunder indeholder ingen duplikerede Kunde-id-felter, men det gør tabellen Ordrer, fordi hver kunde kan have mange ordrer. Følgende SQL-sætning viser, hvordan du kan bruge DISTINCTROW til at oprette en liste over firmaer, der har mindst én ordre, men uden oplysninger om disse ordrer:

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

Hvis du udelader DISTINCTROW, resulterer denne forespørgsel i flere rækker for hver enkelt virksomhed, der har mere end én ordre.

DISTINCTROW har kun effekt, når du vælger felter fra nogle men ikke alle de tabeller, der bruges i forespørgslen. DISTINCTROW ignoreres, hvis forespørgslen kun indeholder én tabel, eller hvis du får felter fra alle tabeller.

TOP n [PERCENT]

Returnerer et bestemt antal poster, der ligger øverst eller nederst i et område, som er angivet af delsætningen ORDER BY. Antag, at du vil have vist navnene på de bedste 25 studerende fra klassen fra 1994:

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

Hvis du ikke medtager delsætningen ORDER BY, returnerer forespørgslen et vilkårligt sæt med 25 poster fra tabellen Elever, der opfylder WHERE-delsætningen.

Prædikatet TOP vælger ikke mellem ens værdier. Hvis det femogtyvende og seksogtyvende højeste karaktergennemsnit i det foregående eksempel er ens, vil forespørgslen returnere26 poster.

Du kan også bruge det reserverede ord PERCENT til at returnere en bestemt procentdel af poster, der ligger øverst eller nederst i et område, der er angivet af delsætningen ORDER BY. Antag, at du i stedet for de øverste 25 studerende vil have vist de nederste 10 % af klassen:

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

Prædikatet ASC angiver retur af de nederste værdier. Den værdi, der følger TOP, skal være et heltal uden fortegn.

TOP har ingen indflydelse på, om forespørgslen kan opdateres eller ej.

tabel

Navnet på den tabel, som posterne skal hentes fra.

Har du brug for mere hjælp?

Vil du have flere indstillinger?

Udforsk abonnementsfordele, gennemse kurser, få mere at vide om, hvordan du sikrer din enhed og meget mere.

Communities hjælper dig med at stille og besvare spørgsmål, give feedback og høre fra eksperter med omfattende viden.