SQL TOP, LIMIT, FETCH FIRST або ROWNUM Пропозиція
SQL Пропозиція SELECT TOP
Пропозиція SELECT TOP використовується для визначення кількості записів для повернення.
Пропозиція SELECT TOP корисна для великих таблиць із тисячами записів. Повернення великої кількості записів може вплинути на продуктивність.
Приклад
Виберіть лише перші 3 записи таблиці Customers (Клієнти):
SELECT TOP 3 * FROM Customers;
Try it Yourself »
Примітка: Не всі системи баз даних підтримують пропозицію 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 Синтаксис (із ORDER BY):
SELECT *
FROM (SELECT column_name(s) FROM table_name
ORDER BY column_name(s))
WHERE ROWNUM <= number;
Демонстраційна база даних
Нижче наведено вибірку з таблиці Customers, яка використовується в прикладах.
| 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
Наступна SQL інструкція показує еквівалентний приклад для MySQL:
Приклад
Виберіть перші 3 записи таблиці Customers (Клієнти):
SELECT * FROM Customers
LIMIT 3;
Try it Yourself »
FETCH FIRST
Наступна SQL інструкція показує еквівалентний приклад для Oracle:
Приклад
Виберіть перші 3 записи таблиці Customers (Клієнти):
SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;
SQL TOP PERCENT Приклад
Наступна SQL інструкція вибирає перші 50% записів із таблиці "Customers" (для SQL Server/MS Access):
Наступна SQL інструкція показує еквівалентний приклад для Oracle:
Приклад
SELECT * FROM Customers
FETCH FIRST 50 PERCENT ROWS ONLY;
Додати пропозицію WHERE
Наступна SQL інструкція вибирає перші три записи з таблиці Customers, де країна — "Germany" (для SQL Server/MS Access):
Наступна SQL інструкція показує еквівалентний приклад для MySQL:
Наступна SQL інструкція показує еквівалентний приклад для Oracle:
Приклад
SELECT * FROM Customers
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;
Додати ключове слово ORDER BY
Додайте ключове слово ORDER BY, якщо ви хочете відсортувати результат, і поверніть перші 3 записи відсортованого результату.
Для SQL Server і MS Access:
Приклад
Відсортуйте результат в алфавітному порядку за ім’ям клієнта (CustomerName) та поверніть перші 3 записи:
SELECT TOP 3 * FROM Customers
ORDER BY CustomerName DESC;
Try it Yourself »
Наступна SQL інструкція показує еквівалентний приклад для MySQL:
Наступна SQL інструкція показує еквівалентний приклад для Oracle:
Приклад
SELECT * FROM Customers
ORDER BY CustomerName DESC
FETCH FIRST 3 ROWS ONLY;