Background Image
마이그레이션
2008.11.21 17:28

MySQL의 limit 명령어 처리

조회 수 32682 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
다음과 같은 방법으로도 처리할 수 있습니다.
select (select * from a where a where b > 11000) from a rownum between 1 and 10

저의 경우는 서브쿼리입니다..
>
> 결과를 필터링하는 용도로, 그것이 적용되는 위치에 따라서 다음의 세 가지 함수를 지원합니다.
> 현재의 상용 DBMS 중에서는 가장 다양한 옵션을 제공합니다.
> inst_num() - rownum 으로도 표현됨
> groupby_num()
> orderby_num()
>
> 1. inst_num()은 rownum 으로도 표현되며, WHERE 절의 검색 조건을 만족하는 결과 튜플에 적용하여, 이를 필터링 합니다.
> 아래와 같이, WHERE 절의 검색 조건에 inst_num() 검색 조건을 추가하여 기술합니다.
> csql> select inst_num(), a, b from tbl where a > 0 and inst_num() between 2 and 3;
> csql> ;run
>
> === <Result of SELECT Command in Line 1> ===
>
> inst_num() a b
> =======================================
> 2 2 4
> 3 3 6
>
> 2. groupby_num()은 GROUP BY 절이 있는 경우에, WHERE 절을 통과한 결과 튜플을 그룹핑한 결과에 적용하여, 이를 필터링 합니다.
> 예를 들어, 그룹핑한 결과의 두번째, 세번째 튜플을 가져오려면 HAVING 절에 검색조건을 추가하여 기술합니다.
> csql> select groupby_num(), a, count(*) from tbl group by a having groupby_num() between 2 and 3;
> csql> ;run
>
> === <Result of SELECT Command in Line 1> ===
>
> groupby_num() a count(*)
> =========================================
> 2 1 1
> 3 2 1
>
> 3. orderby_num()은 ORDER BY 절의 순서대로 정렬한 최종 결과튜플에 적용하여, 이를 필터링 합니다.
> 예를 들어, 최종 결과의 두번째, 세번째 튜플을 가져오려면 ORDER BY ... FOR .. 에 검색 조건을 기술합니다.
> csql> select orderby_num(), a, b from tbl order by a for orderby_num() between 2 and 3
> csql> ;run
>
> === <Result of SELECT Command in Line 1> ===
>
> orderby_num() a b
> =========================================
> 2 1 2
> 3 2 4
>
> 쿼리의 처리 순서로 보면 inst_num() -> groupby_num() -> orderby_num() 의 순서로 적용됩니다. 질의문 사용시에 이를 고려하셔서 필요한 함수를 사용하시면 될 것입니다.
>
> 즉, MySQL의 LIMIT를 큐브리드 형식으로 바꾸려면 다음과 같이 하시면 되겠지요.
> 질의문에 group by, order by 절이 없으면: LIMIT -> WHERE 절에 inst_num() 조건 추가
> 질의문에 group by 절이 있고 order by 절이 없으면: LIMIT -> HAVING 절에 groupby_num() 조건 추가
> 질의문에 order by 절이 있으면: LIMIT -> ORDER BY .. FOR 절에 orderby_num() 조건 추가하면 됩니다.
>
  • ?
    phpkorea 2010.01.24 03:33
    select * from (select * from a ) as a  where rownum BETWEEN 1 and 5
    이런식으로 사용하셔야 합니다.
    subquery는 select * from과 as a 로 subquery를 감싸야 동작합니다. :)

  1. CMT를 이용하여 원본 특정 테이블의 일부 데이터만 가져와 대상 테이블에 넣기

  2. MySQL 테이블 크기 조사하기-공유

  3. CUBRID와 Oracle의 NULL과 '' (empty string)의 처리 차이점

  4. CM(CUBRID Manager)을 이용하여 행정표준코드시스템의 기관코드 가져오기

  5. CUBRID vs MySQL vs ORACLE SQL 타입별 비교

  6. MySQL+XE를 CUBRID+XE로 운영하기 – mysqldump파일과 CMT사용

  7. MySQL에서 CUBRID로 갈아탈 때 알아야 할 것

  8. 오라클의 order by 시 first와 last 대체 사용법

  9. CUBRID Migration Tookit 8.4.1

  10. 데이터베이스 마이그레이션(unloaddb & loaddb) 의 효과적인 수행방법

  11. MySQL에서 사용하는 스키마 변환시 주의 사항

  12. 오라클 to CUBRID로 마이그레이션 수행 시 주의사항

  13. 타 DBMS를 CUBRID로 마이그레이션 시 varchar,char 컬럼 사이즈 관련

  14. 타 DB 에서 마이그레이션시 질의 변경 샘플 - CASE 문

  15. CUBRID는 MySQL의 varchar(255)와 동일한 길이가 아닌가요?

  16. CUBRID 하위버젼에서 CUBRID2008로의 업그레이드 방법

  17. MySQL의 limit 명령어 처리

Board Pagination Prev 1 Next
/ 1

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales