SQLSELECT TOP, LIMIT and FETCH FIRST
The SQL SELECT TOP Clause
TheSELECT TOP clause is used to limit the number of records to return.
TheSELECT TOP clause is useful on large tables with thousands of records. Returning a large number of records can impact performance.
Example
Select only the first 3 records of the Customers table:
Note: Not all database systems support theSELECT TOP clause. MySQL supports theLIMIT clause to select a limited number of records, while Oracle usesFETCH FIRSTn ROWS ONLY.
SQL Server / MS Access Syntax:
SELECT TOPnumber|percentcolumn_name(s)
FROMtable_name
WHEREcondition;
MySQL Syntax:
SELECTcolumn_name(s)
FROMtable_name
WHEREcondition
LIMITnumber;
Oracle 12 Syntax:
SELECTcolumn_name(s)
FROMtable_name
ORDER BY column_name(s)
FETCH FIRSTnumber ROWS ONLY;
Demo Database
Below is a selection from theCustomers table used in the examples:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
LIMIT
The following SQL statement shows the equivalent example for MySQL:
Example
Select the first 3 records of the Customers table:
LIMIT 3;
FETCH FIRST
The following SQL statement shows the equivalent example for Oracle:
Example
Select the first 3 records of the Customers table:
FETCH FIRST 3 ROWS ONLY;
SQL TOP PERCENT Example
The following SQL statement selects the first 50% of the records from the "Customers" table (for SQL Server/MS Access):
The following SQL statement shows the equivalent example for Oracle:
Example
FETCH FIRST 50 PERCENT ROWS ONLY;
SELECT TOP with WHERE
The following SQL statement selects the first three records from the "Customers" table, where the country is "Germany" (for SQL Server/MS Access):
The following SQL statement shows the equivalent example for MySQL:
The following SQL statement shows the equivalent example for Oracle:
Example
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;
SELECT TOP and ORDER BY
Add theORDER BY keyword when you want to sort the result, and return the first 3 records of the sorted result.
For SQL Server and MS Access:
Example
Sort the result reverse alphabetically by CustomerName, and return the first 3 records:
ORDER BY CustomerName DESC;
The following SQL statement shows the equivalent example for MySQL:
The following SQL statement shows the equivalent example for Oracle:
Example
ORDER BY CustomerName DESC
FETCH FIRST 3 ROWS ONLY;

