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 konnteROWNUMähnliche Funktionalität implementieren, aber in Version 12c und höher führte es einFETCH FIRST。
  • Bei VerwendungTOPoderLIMIT, 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:

EmployeeIDEmployeeNameSalary
1John Smith50000
2Maria Garcia60000
3Liam Johnson70000
4Emma Wilson80000
5Oliver Brown90000

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

SELECT * FROM Websites LIMIT 2;

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.

SELECT TOP 50 PERCENT * FROM Websites;
Andere Erweiterungen