참조 : http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=32831
SQL Server
SELECT TOP 3 *
FROM TableName
ORDER BY ColumnName DESC
DB2
SELECT *
FROM TableName
ORDER BY ColumnName DESC
FETCH FIRST 3 ROWS ONLY
Oracle
SELECT *
( SELECT *
FROM TableName
ORDER BY ColumnName DESC )
WHERE ROWNUM <= 3
Oracle의 경우에는 rownum을 이용하는 방법을 사용한다. 그러나 rownum이라는 로우가 Fetch된 후 순번이 부여되는
가상(pusedo) 컬럼으로 실행 순서가 order by보다 앞서서 Fetch된 후 부여되기 때문에 rownum + order by를 같이 쓰게
될 때 원하는 순서가 틀어지게 된다. 따라서 인라인 뷰로 묶어서 먼저 정렬시킨 후에 외부에서 rownum을 부여해야 정확한 순서를 나타낼 수
있다. 비효율적으로 보이지만 앞선 두 개의 데이터베이스와 같이 버퍼를 사용하는 기본 Fetch 원리와 성능은 동일하다.
'DB' 카테고리의 다른 글
INDEX를 사용하지 못하는 경우 (0) | 2009.05.12 |
---|---|
Fedora Core 5에서 오라클 10g Release 2 설치 (0) | 2006.06.30 |
DB별 JDBC 세팅 (0) | 2006.04.04 |