TOP

SQL TOP, LIMIT, FETCH FIRST și ROWNUM

SQL SELECT TOP Descriere

Expresia SELECT TOP este utilizată pentru a specifica numărul de înregistrări de selectat.

SQL SELECT TOP este util pentru tabele mari cu mii de înregistrări, deoarece returnarea unui număr mare de înregistrări poate afecta performanța sistemului.


Nu toate sistemele de baze de date acceptă expresia SELECT TOP. MySQL acceptă expresia LIMIT pentru a selecta un număr limitat de înregistrări, în timp ce Oracle utilizează FETCH FIRST n ROWS ONLY și ROWNUM.

SQL Server / MS Access Sintaxă:

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

Sintaxă MySQL:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number

Oracle 12 Sintaxă:

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

Sintaxă Oracle depreciată:

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

Sintaxă Oracle învechită (cu ORDER BY):

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

Baza de date demonstrativă

Următorul este un exemplu din tabelul „Customers” („Clienți”) din baza de date „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

Exemple SQL TOP, LIMIT și FETCH FIRST

Următoarea instrucțiune SQL selectează primele trei înregistrări din tabelul „Customers” (pentru SQL Server/MS Access):

SELECT TOP 3 * 
FROM Customers

Următoarea instrucțiune SQL arată un exemplu echivalent pentru MySQL:

Run SQLSELECT * 
FROM Customers 
LIMIT 3

Următoarea instrucțiune SQL arată un exemplu echivalent pentru Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 3 ROWS ONLY

SQL TOP PERCENT Exemplu

Următoarea instrucțiune SQL selectează primele 50% dintre înregistrări din tabelul „Customers” (pentru SQL Server/MS Access):

SELECT TOP 50 PERCENT * 
FROM Customers

Următoarea instrucțiune SQL arată un exemplu echivalent pentru Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 50 PERCENT ROWS ONLY

Folosind expresia WHERE

Următoarea instrucțiune SQL selectează primele trei înregistrări din tabelul „Customers” unde țara este „Germany” (pentru SQL Server/MS Access):

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

Următoarea instrucțiune SQL arată un exemplu echivalent pentru MySQL:

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

Următoarea instrucțiune SQL arată un exemplu echivalent pentru Oracle:

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