Prædikaterne ALL, DISTINCT, DISTINCTROW og TOP

Prædikaterne ALL, DISTINCT, DISTINCTROW og TOP

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 Employees
ORDER BY EmployeeID;
SELECT *
FROM Employees
ORDER 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 LastName
FROM 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 baseret på hele duplikerede poster, ikke blot duplikerede 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, da 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 nogen oplysninger om disse ordrer:

SELECT DISTINCTROW CompanyName
FROM Customers INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER 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 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER 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 PERCENT
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER 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.



Udvid dine færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×