Predikaten ALL, DISTINCT, DISTINCTROW, TOP

Predikaten ALL, DISTINCT, DISTINCTROW, TOP

Anger de poster som har markerats med SQL-frågor.

Syntax

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

En SELECT-instruktion som innehåller de här predikaten har följande delar:

Element

Beskrivning

ALL

Antas om du inte tar med något av predikaten. Databasmotorn i Microsoft Access väljer ut alla poster som uppfyller villkoren i SQL-uttrycket. Följande två exempel är likvärdiga och returnerar alla poster från tabellen Employees:

SELECT ALL *
FROM Employees
ORDER BY EmployeeID;
SELECT *
FROM Employees
ORDER BY EmployeeID;

DISTINCT

Utelämna poster som innehåller dubblettdata i de markerade fälten. För att tas med i resultatet av frågan måste värdena för varje fält som listas i SELECT-instruktionen vara unika. Exempelvis kan flera anställda som listas i tabellen Anställda ha samma efternamn. Om två poster innehåller Smith i fältet LastName returnerar följande SQL-instruktion bara en post som innehåller Smith:

SELECT DISTINCT LastName
FROM Employees;

Om du utelämnar DISTINCT returnerar den här frågan båda Smith-posterna.

Om SELECT-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 viss post ska tas med i resultatet.

Resultatet av en fråga som använder DISTINCT går inte att uppdatera och speglar inte efterföljande ändringar som gjorts av andra användare.

DISTINCTROW

Utelämnar data som baseras på hela dubblettposter, inte bara dubblettfält. Du kan till exempel skapa en fråga som ansluter tabellerna Kunder och Order i fältet Kund-ID. Tabellen Kunder innehåller inga duplicerade Kundnr-fält, men det gör tabellen Order eftersom varje kund kan ha många order. Följande SQL-instruktion visar hur du kan använda DISTINCTROW för att skapa en lista över företag som har minst en order men utan information om dessa order:

SELECT DISTINCTROW CompanyName
FROM Customers INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER BY CompanyName;

Om du utelämnar DISTINCTROW ger den här frågan flera rader för varje företag som har fler än en order.

DISTINCTROW har endast effekt när du väljer fält från vissa, men inte alla, tabeller som används i frågan. DISTINCTROW ignoreras om frågan bara innehåller en tabell, eller om du matar ut fält från alla tabeller.

TOP n [PERCENT]

Returnerar ett visst antal poster högst upp eller längst ned i ett intervall som anges av en ORDER BY-sats. Anta att du vill ha namnen på de 25 bästa eleverna från klassen 1994:

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 tabellen Students som uppfyller WHERE-satsen.

Predikatet TOP väljer inte mellan lika värden. I exemplet ovan returnerar frågan 26 poster om de 25 och 26 högsta betygsbetygen är desamma.

Du kan också använda det reserverade ordet PERCENT för att returnera en viss procentandel poster som finns längst upp eller längst ned i ett intervall som anges av en ORDER BY-sats. Anta att du istället för de 25 bästa eleverna vill ha de 10 lägsta procenten i klassen:

SELECT TOP 10 PERCENT
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage ASC;

ASC-predikatet anger en retur av lägsta värden. Värdet som följer efter TOP måste vara ett osignerat heltal.

TOP påverkar inte om frågan kan uppdateras eller inte.

tabell

Namnet på den tabell från vilken posterna ska hämtas.



Behöver du mer hjälp?

Utöka dina Office-kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×