Predikaten ALL, DISTINCT, DISTINCTROW, TOP

Gäller för
Access för Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Använd predikaten för att ange vilka poster som SQL-frågan ska välja.

Syntax

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

Ett SELECT uttryck som innehåller dessa predikat har följande delar:

Element Beskrivning
ALL Access förutsätter ALL om du inte inkluderar ett annat predikat. Access-databasmotorn väljer alla poster som uppfyller villkoren i SQL-uttrycket. De här exemplen är likvärdiga och returnerar alla poster från tabellen Employees : SELECT ALL * FROM Employees ORDER BY EmployeeID; och SELECT * FROM Employees ORDER BY EmployeeID;
DISTINCT Utelämnar poster som innehåller dubblettdata i de markerade fälten. Om du vill ta med en post i resultatet måste värdena för varje fält i SELECT uttrycket vara unika. Flera anställda i en Employees tabell kan till exempel ha samma efternamn. Om det finns Smith två poster i fältet LastName returneras SELECT DISTINCT LastName FROM Employees; bara en post som innehåller Smith. Om du utelämnar DISTINCTreturnerar frågan båda Smith posterna. SELECT Om satsen innehåller fler än ett fält måste kombinationen av värdena från alla fält vara unik för att en post ska visas i resultatet. Utdata från en fråga som använder DISTINCT går inte att uppdatera och återspeglar inte senare ändringar som gjorts av andra användare.
DISTINCTROW Utelämnar data baserat på hela dubblettposter, inte bara dubblettfält. Du kan till exempel skapa en fråga som kopplar Customers samman och tabeller Orders i fältet CustomerID . Tabellen Customers har inga dubblettfält CustomerID , men tabellen Orders har det eftersom varje kund kan ha många order. SELECT DISTINCTROW CompanyName FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID ORDER BY CompanyName; Skapar en lista över företag som har minst en order, men den innehåller ingen information om dessa order. Om du utelämnar DISTINCTROWskapar frågan flera rader för varje företag som har fler än en order. DISTINCTROW Har bara effekt när du väljer fält från vissa, men inte alla, tabeller som används i frågan. Access ignorerar DISTINCTROW om frågan innehåller endast en tabell eller om du matar ut fält från alla tabeller.
TOP n [PERCENT] Returnerar ett angivet antal poster som hamnar längst upp eller längst ned i det intervall som anges i en ORDER BY sats. Anta att du vill ha namnen på de 25 bästa eleverna från årskullen 2003: SELECT TOP 25 FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage DESC; Om du inte tar med ORDER BY satsen returnerar frågan en godtycklig uppsättning på 25 poster från Students tabellen som uppfyller WHERE satsen. Predikatet TOP väljer inte mellan likhetsvärden. Om de 25:e och 26:e högsta medelbetygen är desamma i exemplet ovan returnerar frågan 26 poster. Du kan också använda det PERCENT reserverade ordet för att returnera en procentandel av posterna som hamnar i toppen eller botten av ett intervall som anges i en ORDER BY sats. Om du till exempel vill ha de lägsta 10 procenten i klassen använder SELECT TOP 10 PERCENT FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage ASC; du Predikatet ASC returnerar de lägsta värdena. Värdet som följer TOP måste vara ett heltal utan tecken. TOP Påverkar inte om frågan kan uppdateras.
table Namnet på den tabell från vilken Access hämtar poster.