SQL SELECT TOP, LIMIT, ROWNUMKlauseln
SQL SELECT TOP-Klausel
Die SELECT TOP-Anweisung wird verwendet, um die Anzahl der Zeilen in der in SQL zurückgegebenen Ergebnismenge zu begrenzen. Sie wird typischerweise verwendet, wenn Sie nur die ersten paar Datenzeilen abfragen müssen, insbesondere wenn der Datenbestand sehr groß ist, da sie die Abfrageleistung erheblich verbessern kann.
Die SELECT TOP-Klausel ist sehr nützlich für große Tabellen mit Tausenden von Datensätzen.
Hinweis:
SELECT TOPWird in SQL Server und MS Access verwendet, während in MySQL und PostgreSQL verwendet wirdLIMITSchlüsselwort.- Vor Version 12c hatte Oracle kein direktes äquivalentes Schlüsselwort; es konnte
ROWNUMähnliche Funktionalität implementieren, aber in Version 12c und höher führte es einFETCH FIRST。 - Bei Verwendung
TOPoderLIMIT, ist es am besten zu kombinieren mitORDER BYdie Klausel, um sicherzustellen, dass die zurückgegebenen Zeilen die ersten paar Zeilen in einer bestimmten Reihenfolge sind.
SQL Server / MS Access-Syntax
SELECT TOP number|percent column1, column2, ... FROM table_name;
number|percent: Gibt die Anzahl der zurückzugebenden Zeilen oder den Prozentsatz an.
number: Bestimmte Anzahl von Zeilen.percent: Prozentsatz des Datensatzes.
MySQL-Syntax
SELECT column1, column2, ... FROM table_name LIMIT number;
Oracle-Syntax
SELECT column1, column2, ... FROM table_name FETCH FIRST number ROWS ONLY;
PostgreSQL-Syntax
SELECT column1, column2, ... FROM table_name LIMIT number;
Beispiele
Angenommen, wir haben eine Tabelle namens Employees, die folgende Daten enthält:
| EmployeeID | EmployeeName | Salary |
|---|---|---|
| 1 | John Smith | 50000 |
| 2 | Maria Garcia | 60000 |
| 3 | Liam Johnson | 70000 |
| 4 | Emma Wilson | 80000 |
| 5 | Oliver Brown | 90000 |
SQL Server und MS Access geben die ersten 3 Datenzeilen zurück:
SELECT TOP 3 EmployeeName, Salary FROM Employees;
Die ersten 10 % der Daten zurückgeben:
SELECT TOP 10 PERCENT EmployeeName, Salary FROM Employees;
MySQL gibt die ersten 3 Datenzeilen zurück:
SELECT EmployeeName, Salary FROM Employees LIMIT 3;
PostgreSQL gibt die ersten 3 Datenzeilen zurück:
SELECT EmployeeName, Salary FROM Employees LIMIT 3;
Oracle gibt die ersten 3 Datenzeilen zurück:
SELECT EmployeeName, Salary FROM Employees FETCH FIRST 3 ROWS ONLY;
Demo-Datenbank
In diesem Tutorial verwenden wir die Beispieldatenbank EXAMPLE.
Nachfolgend sind die Daten aufgeführt, die aus der Tabelle "Websites" ausgewählt wurden:
mysql> SELECT * FROM Websites; +----+---------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+---------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | Example | http://www.example.com/ | 5000 | USA | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
MySQL SELECT LIMIT Beispiel
Die folgende SQL-Anweisung wählt die ersten zwei Datensätze aus der Tabelle "Websites" aus:
Beispiel
Nach Ausführung des obigen SQL sehen die Daten wie folgt aus:
SQL SELECT TOP PERCENT Beispiel
In Microsoft SQL Server können Sie auch einen Prozentsatz als Parameter verwenden.
Die folgende SQL-Anweisung wählt die ersten 50 Prozent der Datensätze aus der Tabelle Websites aus:
Beispiel
Die folgenden Vorgänge können in einer Microsoft SQL Server-Datenbank ausgeführt werden.