sql rownum 예제

양수 정수보다 큰 ROWNUM 값에 대한 조건 테스트는 항상 false입니다. 예를 들어 이 쿼리는 행을 반환하지 않습니다: 이 예제와 같이 ROWNUM을 사용하여 테이블의 각 행에 고유한 값을 할당할 수도 있습니다. 단점은 임시 테이블에 결과를 삽입한 다음 임시 테이블에서 선택하여 rownum을 검색해야 한다는 것입니다. 다음 SQL 문은 ROWNUM을 사용하여 동등한 예를 보여줍니다 : 참고 – 모든 데이터베이스는 TOP 절을 지원하지 않습니다. 예를 들어 MySQL은 제한된 수의 레코드를 가져오기 위해 LIMIT 절을 지원하는 반면 오라클은 ROWNUM 명령을 사용하여 제한된 수의 레코드를 가져옵니다. 다음 쿼리는 CUSTOMERS 테이블에서 상위 3개 레코드를 가져오는 SQL 서버의 예입니다. 당신이 MySQL 서버를 사용하는 경우, 여기에 동등한 예입니다 – 당신은 이 예에서와 같이, 쿼리에 의해 반환 된 행의 수를 제한하기 위해 ROWNUM을 사용할 수 있습니다 : 당신은 하위 쿼리에 ORDER BY 절을 포함하고 최상위 쿼리에 ROWNUM 조건을 배치하는 경우 그런 다음 행 순서를 정한 후 ROWNUM 조건을 강제로 적용할 수 있습니다. 예를 들어 다음 쿼리는 가장 작은 직원 번호 10명으로 직원을 반환합니다. 이를 최상위 N 보고라고도 합니다. 이는 테이블의 기본 키를 포함하는 경우 ID 함수가 작동하지 않기 때문입니다. 앞의 예제에서 ROWNUM 값은 최상위 SELECT 문의 값이므로 하위 쿼리에서 employee_id에서 행이 이미 정렬된 후에 생성됩니다.

ORDER BY 절이 동일한 쿼리에서 ROWNUM을 따르는 경우 행은 ORDER BY 절에 의해 다시 정렬됩니다. 결과는 행에 액세스하는 방식에 따라 달라질 수 있습니다. 예를 들어 ORDER BY 절로 인해 오라클이 인덱스를 사용하여 데이터에 액세스하는 경우 Oracle은 인덱스가 없는 행과 다른 순서로 행을 검색할 수 있습니다.