Skip to content

10. SELECT TOP


1. SELECT TOP Clause

  • SELECT TOP 절은 반환할 레코드 수를 지정하는 데 사용된다.
  • SELECT TOP 절은 수천 개의 레코드가 있는 큰 테이블에 유용하다.
  • 참고로 MySQL은 LIMIT 절을 지원하는 반면 Oracle은 FETCH FIRST n ROWS ONLYROWNUM을 지원한다.


2. Syntax

1) SQL Server / MS Access

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


2) MySQL

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;


3) Oracle 12

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


4) Older Oracle

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


5) Older Oracle (with ORDER BY)

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


Demo Database

  • 다음은 Northwind 샘플 데이터베이스의 Customers 테이블이다.


001


3. TOP, LIMIT and FETCH FIRST Examples

  • 다음은 Customers 테이블에서 처음 세 개의 레코드를 선택한다. (SQL Server/MS Access)


SELECT TOP 3 * FROM Customers;


  • 다음은 MySQL에 해당하는 예를 보여준다.


SELECT * FROM Customers
LIMIT 3;


  • 다음은 Oracle에 해당하는 예를 보여준다.


SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;


4. TOP PERCENT Example

  • 다음은 Customers 테이블에서 레코드의 처음 50%를 선택한다. (SQL Server/MS Access)


SELECT TOP 50 PERCENT * FROM Customers;


  • 다음은 Oracle에 해당하는 예를 보여준다.


SELECT * FROM Customers
FETCH FIRST 50 PERCENT ROWS ONLY;


5. ADD a WHERE CLAUSE

  • 다음은 Customers 테이블에서 국가가 "Germany"인 처음 세 개의 레코드를 선택한다. (SQL Server/MS Access)


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


  • 다음은 MySQL에 해당하는 예를 보여준다.
SELECT * FROM Customers
WHERE Country = 'Germany'
LIMIT 3;


  • 다음은 Oracle에 해당하는 예를 보여준다.


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

References