Predikaten ALL, DISTINCT, DISTINCTROW, TOP

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

Använd de här predikaten för att ange vilka poster en SQL-fråga ska välja.

Syntax

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

Ett SELECT uttryck som innehåller dessa predikat består av följande delar:

Element Beskrivning
ALL Access förutsätter ALL att du inte tar med något annat predikat. Access-databasmotorn markerar alla poster som uppfyller villkoren i SQL-instruktionen. Dessa exempel är likvärdiga och returnerar alla poster från Employees tabellen: 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 två poster innehåller Smith i fältet LastNameSELECT DISTINCT LastName FROM Employees; returneras 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ärden från alla fält vara unik för att en post ska visas i resultatet. Resultatet av en fråga som använder DISTINCT är inte uppdateringsbar 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 samman Customers och Orders tabeller på fältet CustomerID . Tabellen Customers har inga dubblettfält CustomerID , men tabellen Orders gör 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 inte 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, av tabellerna som används i frågan. Access ignorerar DISTINCTROW om frågan bara innehåller en tabell eller om du utdatafält från alla tabeller.
TOP n [PERCENT] Returnerar ett visst antal poster som ligger högst upp eller längst ned i ett område som en ORDER BY sats anger. Anta att du vill ha namnen på de 25 bästa eleverna från klassen 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 med 25 poster från Students tabellen som uppfyller WHERE satsen. Predikatet TOP väljer inte mellan lika värden. I exemplet ovan returnerar frågan 26 poster om medelvärdet för de tjugofemtjugo och tjugosju sjätte högsta betygen är desamma. Du kan också använda det PERCENT reserverade ordet för att returnera en procentandel poster som hamnar högst upp eller längst ned i ett område som en ORDER BY sats anger. Om du till exempel vill ha de lägsta 10 procenten av klassen använder SELECT TOP 10 PERCENT FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage ASC;ASC du Predikatet returnerar de lägsta värdena. Värdet som följer TOP måste vara ett osignerat heltal. TOP påverkar inte om frågan kan uppdateras.
table Namnet på tabellen som Access hämtar poster från.