Klauzula SQL TOP, LIMIT, FETCH FIRST lub ROWNUM
Klauzula SQL SELECT TOP
Klauzula SELECT TOP
służy do określenia liczby rekordów do zwrócenia.
Klauzula SELECT TOP
jest przydatna w przypadku dużych tabel zawierających tysiące rekordów. Zwracanie dużej liczby rekordów może wpłynąć na wydajność.
Uwaga: Nie wszystkie systemy baz danych obsługują
SELECT TOP
klauzulę. MySQL obsługuje LIMIT
klauzulę wyboru ograniczonej liczby rekordów, podczas gdy Oracle używa i .
FETCH FIRST n ROWS ONLY
ROWNUM
Składnia serwera SQL / MS Access:
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
Składnia MySQL:
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
Składnia Oracle 12:
SELECT column_name(s)
FROM table_name
ORDER BY
column_name(s)
FETCH FIRST number ROWS ONLY;
Starsza składnia Oracle:
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
Starsza składnia Oracle (z ORDER BY):
SELECT *
FROM (SELECT column_name(s) FROM table_name
ORDER BY column_name(s))
WHERE ROWNUM <= number;
Demo bazy danych
Poniżej znajduje się wybór z tabeli „Klienci” w przykładowej bazie danych Northwind:
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 |
Przykłady SQL TOP, LIMIT i FETCH FIRST
Poniższa instrukcja SQL wybiera pierwsze trzy rekordy z tabeli „Klienci” (dla SQL Server/MS Access):
Przykład
SELECT TOP 3 * FROM Customers;
Poniższa instrukcja SQL przedstawia równoważny przykład dla MySQL:
Przykład
SELECT * FROM Customers
LIMIT 3;
Poniższa instrukcja SQL przedstawia równoważny przykład dla Oracle:
Przykład
SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;
Przykład SQL TOP PERCENT
Poniższa instrukcja SQL wybiera pierwsze 50% rekordów z tabeli „Klienci” (dla SQL Server/MS Access):
Przykład
SELECT TOP 50 PERCENT * FROM Customers;
Poniższa instrukcja SQL przedstawia równoważny przykład dla Oracle:
Przykład
SELECT * FROM Customers
FETCH FIRST 50 PERCENT ROWS ONLY;
DODAJ KLAUZUJĘ GDZIE
Poniższa instrukcja SQL wybiera pierwsze trzy rekordy z tabeli „Klienci”, gdzie krajem jest „Niemcy” (dla SQL Server/MS Access):
Przykład
SELECT TOP 3 * FROM Customers
WHERE Country='Germany';
Poniższa instrukcja SQL przedstawia równoważny przykład dla MySQL:
Przykład
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;
Poniższa instrukcja SQL przedstawia równoważny przykład dla Oracle:
Przykład
SELECT * FROM Customers
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;