ВГОРУ

SQL TOP, LIMIT, FETCH FIRST та ROWNUM

SQL SELECT TOP Опис

Вираз SELECT TOP використовується для визначення кількості записів при вибірці.

SQL SELECT TOP є корисним для великих таблиць із тисячами записів, оскільки повернення великої кількості записів може вплинути на продуктивність системи.


Не всі системи баз даних підтримують вираз SELECT TOP. MySQL підтримує вираз LIMIT для вибору обмеженої кількості записів, тоді як Oracle використовує FETCH FIRST n ROWS ONLY та ROWNUM.

SQL Server / MS Access Синтаксис:

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition

MySQL Синтаксис:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number

Oracle 12 Синтаксис:

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY

Застарілий Oracle Синтаксис:

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number

Застарілий Oracle Синтаксис (with ORDER BY):

SELECT *
FROM (SELECT column_name(s) FROM table_name ORDER BY column_name(s))
WHERE ROWNUM <= number

Демонстраційна база даних

Нижче наведено вибірку з таблиці "Customers" ("Клієнти") бази даних "Northwind":

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

SQL TOP, LIMIT and FETCH FIRST Приклади

Наступна SQL-інструкція вибирає перші три записи з таблиці "Customers" (для SQL Server/MS Access):

SELECT TOP 3 * 
FROM Customers

Наступна SQL-інструкція показує еквівалентний приклад для MySQL:

Run SQLSELECT * 
FROM Customers 
LIMIT 3

Наступна SQL-інструкція показує еквівалентний приклад для Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 3 ROWS ONLY

SQL TOP PERCENT Приклад

Наступна SQL-інструкція вибирає перші 50% записів із таблиці "Customers" (для SQL Server/MS Access):

SELECT TOP 50 PERCENT * 
FROM Customers

Наступна SQL-інструкція показує еквівалентний приклад для Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 50 PERCENT ROWS ONLY

Використання виразу WHERE

Наступна SQL-інструкція вибирає перші три записи з таблиці "Customers", де країною є "Germany" (для SQL Server/MS Access):

SELECT TOP 3 * 
FROM Customers 
WHERE Country = 'Germany'

Наступна SQL-інструкція показує еквівалентний приклад для MySQL:

Run SQLSELECT * 
FROM Customers 
WHERE Country = 'Germany' 
LIMIT 3

Наступна SQL-інструкція показує еквівалентний приклад для Oracle:

SELECT * 
FROM Customers 
WHERE Country = 'Germany' 
FETCH FIRST 3 ROWS ONLY