ALL, DISTINCT, DISTINCTROW en TOP, predicaten
Applies ToAccess voor Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Vermeldt de records die met SQL-query's zijn geselecteerd.

Syntaxis

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

Een SELECT-instructie die deze predicaten bevat, heeft de volgende argumenten:

Argument

Beschrijving

ALL

Dit argument wordt verondersteld als u geen van de predicaten gebruikt. De Microsoft Access-database-engine selecteert alle records die voldoen aan de voorwaarden in de SQL-instructie. De volgende twee voorbeelden hebben hetzelfde resultaat: alle records uit de tabel Werknemers:

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

DISTINCT

Dit argument geeft aan dat records met dubbele gegevens in de geselecteerde velden moeten worden overgeslagen. De waarden voor elk veld dat in de SELECT-instructie wordt vermeld, moeten uniek zijn om in het resultaat van de query te worden opgenomen. Meerdere werknemers in een tabel Werknemers kunnen bijvoorbeeld dezelfde achternaam hebben. Als het veld Achternaam voor twee records de achternaam Wolthuis bevat, geeft de volgende SQL-instructie als resultaat slechts één record die de achternaam Wolthuis bevat:

SELECT DISTINCT LastNameFROM Employees;

Als u het argument DISTINCT weglaat, geeft deze query als resultaat beide records met de achternaam Wolthuis.

Als de SELECT-component meerdere velden bevat, wordt een bepaalde record alleen in de resultaten opgenomen als de combinatie van waarden uit alle velden uniek zijn.

De uitvoer van een query waarin het argument DISTINCT wordt gebruikt, kan niet worden bijgewerkt en houdt geen rekening met latere wijzigingen door andere gebruikers.

DISTINCTROW

Als dit argument wordt gebruikt, worden gegevens weggelaten op basis van volledige dubbele records, niet alleen dubbele velden. U kunt bijvoorbeeld een query maken waarin de tabellen Klanten en Orders worden samengevoegd op basis van het veld Klant-id. De tabel Klanten bevat geen dubbele Klant-id-velden, maar de tabel Orders wel omdat elke klant meerdere orders kan hebben. De volgende SQL-instructie toont u hoe u het argument DISTINCTROW kunt gebruiken om een lijst te maken met bedrijven die ten minste één order hebben, maar zonder details over deze orders:

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

Als u het argument DISTINCTROW weglaat, levert deze query meerdere rijen op voor elk bedrijf met meer dan één order.

DISTINCTROW heeft alleen effect als u velden selecteert uit sommige, maar niet alle, tabellen die in de query worden gebruikt. DISTINCTROW wordt genegeerd als uw query slechts één tabel bevat, of als u velden uit alle tabellen laat weergeven.

TOP n [PERCENT]

Geeft als resultaat een bepaald aantal records boven of onder aan een bereik dat door een ORDER BY-component is aangeduid. U wilt bijvoorbeeld de namen van de beste 25 studenten van het schooljaar 1994 weten:

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

Als u de ORDER BY-component niet gebruikt, geeft de query als resultaat een willekeurige reeks 25 records uit de tabel Studenten die voldoen aan de WHERE-component.

Met het predicaat TOP wordt geen keuze gedaan uit gelijke waarden. Als in het voorgaande voorbeeld het 25e en 26e gemiddeld eindcijfer identiek is, geeft de query als resultaat 26 records.

U kunt ook het gereserveerde woord PERCENT gebruiken om als resultaat een bepaald percentage records te krijgen dat boven of onder aan een bepaald bereik valt, aangeduid door een ORDER BY-component. Stel dat u niet de beste 25 studenten wilt weten, maar wel de 10 procent met de slechtste resultaten van dat schooljaar:

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

Met het predicaat ASC krijgt u als resultaat de laagste waarden. De waarde na TOP moet een geheel getal zonder teken zijn.

TOP heeft geen invloed op het feit of de query al dan niet kan worden bijgewerkt.

tabel

De naam van de tabel waaruit records worden opgehaald.

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.