Prädikate ALL, DISTINCT, DISTINCTROW, TOP

Wichtig :  Dieser Artikel wurde maschinell übersetzt. Bitte beachten Sie den Haftungsausschluss. Die englische Version des Artikels ist als Referenz hier verfügbar: hier.

Gibt Datensätze mit SQL-Abfragen ausgewählt wurden.

Syntax

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

Eine SELECT-Anweisung, die diese Prädikate enthält, hat folgende Teile:

Teil

Beschreibung

ALL

Angenommen, wenn Sie keines der Prädikate nicht einschließen. Microsoft Access-Datenbankmodul markiert alle Datensätze, die die Bedingungen in der SQL-Anweisung entsprechen. Die folgenden beiden Beispiele sind gleichwertig und alle Datensätze aus der Tabelle Employees zurückgegeben:

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

DISTINCT

Bewirkt, dass Datensätze, die doppelte Daten in den ausgewählten Feldern enthalten, nicht eingefügt werden. In die Ergebnisse der Abfrage werden nur Datensätze eingefügt, deren Werte für jedes Feld, das in der SELECT-Anweisung aufgelistet ist, eindeutig sind. Beispielsweise könnte es sein, dass mehrere Mitarbeiter in der Tabelle "Employees" denselben Nachnamen haben. Enthalten zwei Datensätze im Feld "LastName" den Namen "Schmidt", gibt die folgende SQL-Anweisung nur einen Datensatz zurück, der "Schmidt" enthält:

SELECT DISTINCT LastName
FROM Employees;

Wenn Sie DISTINCT nicht angeben, gibt diese Abfrage beide "Schmidt"-Datensätze zurück.

Wenn die SELECT-Klausel mehrere Felder enthält, muss die Kombination der Werte aus allen Feldern eines bestimmten Datensatzes eindeutig sein, damit der Datensatz in ein Ergebnis eingefügt wird.

Die Ausgabe einer Abfrage, in der DISTINCT verwendet wird, ist nicht aktualisierbar und spiegelt keine späteren Änderungen wider, die durch andere Benutzer vorgenommen wurden.

DISTINCTROW

Bewirkt, dass Daten anhand ganzer doppelter Datensätze, nicht nur anhand doppelter Felder übersprungen werden. Beispielsweise könnten Sie eine Abfrage erstellen, in der die Tabellen "Customers" und "Orders" über das Feld "CustomerID" verknüpft werden. Die Tabelle "Customers" enthält keine doppelten "CustomerID"-Felder, aber die Tabelle "Orders" enthält solche Felder, da es für jeden Kunden mehrere Bestellungen geben kann. In der folgenden SQL-Anweisung wird gezeigt, wie Sie DISTINCTROW verwenden können, um eine Liste der Unternehmen zu erstellen, die mindestens eine Bestellung haben (Details zu diesen Bestellungen werden aber nicht angezeigt):

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

Wenn Sie DISTINCTROW nicht angeben, erstellt diese Abfrage mehrere Zeilen für jedes Unternehmen, für das es mehrere Bestellungen gibt.

DISTINCTROW wirkt sich nur aus, wenn Sie Felder nicht aus allen, sondern nur aus einigen der Tabellen auswählen, die in der Abfrage verwendet werden. DISTINCTROW wird ignoriert, wenn die Abfrage nur eine Tabelle enthält oder wenn Sie Felder aus allen Tabellen ausgeben.

TOP n [PERCENT]

Gibt eine bestimmte Anzahl von Datensätzen zurück, die zu den oberen oder unteren Datensätzen eines Bereichs gehören, der durch eine ORDER BY-Klausel angegeben ist. Angenommen, Sie möchten die Namen der besten 25 Schüler des Jahrgangs 2003 ermitteln:

SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;

Wenn Sie die ORDER BY-Klausel nicht angeben, gibt die Abfrage aus der Tabelle "Students" eine zufällige Menge von 25 Datensätzen zurück, die der WHERE-Klausel genügen.

Das Prädikat TOP bewirkt keine Wahl zwischen gleichen Werten. Wären im vorherigen Beispiel der Notendurchschnitt im 25. und im 26. Datensatz gleich, würde die Abfrage 26 Datensätze zurückgeben.

Zusätzlich können Sie das reservierte Wort PERCENT verwenden, um einen bestimmten Prozentsatz von Datensätzen zurückzugeben, die zu den oberen oder unteren Datensätzen eines Bereichs gehören, der durch eine ORDER BY-Klausel angegeben ist. Nehmen Sie an, statt der 25 besten Schüler möchten Sie untersten 10 Prozent des Jahrgangs ermitteln:

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

ASC-Prädikat gibt eine unteren Werte zurückgegeben. Der Wert, der der TOP-Anweisung muss eine Ganzzahl ohne Vorzeichen.

TOP wirkt sich nicht darauf aus, ob die Abfrage aktualisierbar ist oder nicht.

Tabelle

Der Name der Tabelle, aus der Datensätze abgerufen werden.



Hinweis : Haftungsausschluss für maschinelle Übersetzungen: Dieser Artikel wurde mithilfe eines Computersystems und ohne jegliche Bearbeitung durch Personen übersetzt. Microsoft bietet solche maschinellen Übersetzungen als Hilfestellung für Benutzer ohne Englischkenntnisse an, damit Sie von den Informationen zu Produkten, Diensten und Technologien von Microsoft profitieren können. Da es sich bei diesem Artikel um eine maschinelle Übersetzung handelt, enthält er möglicherweise Fehler in Bezug auf (Fach-)Terminologie, Syntax und/oder Grammatik.

War diese Information hilfreich?

Sehr gut. Noch anderes Feedback?

Was können wir verbessern?

Vielen Dank für Ihr Feedback!

×