TOP

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 구문(ORDER BY 사용):

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

데모 데이터베이스

다음은 "Northwind" 데이터베이스의 "Customers"("고객") 테이블의 샘플입니다.

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 및 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 문은 "Customers" 테이블(SQL Server/MS Access의 경우)에서 레코드의 처음 50%를 선택합니다.

SELECT TOP 50 PERCENT * 
FROM Customers

다음 SQL 문은 Oracle에 해당하는 예를 보여줍니다.

SELECT * 
FROM Customers 
FETCH FIRST 50 PERCENT ROWS ONLY

WHERE 표현식 사용

다음 SQL 문은 국가가 "Germany"인 "Customers" 테이블에서 처음 세 개의 레코드를 선택합니다(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