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

MySQL의 limit 명령어 처리

조회 수 31898 추천 수 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를 감싸야 동작합니다. :)

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
17 운영관리 SElinux 환경에서 CUBRID 사용하기 2 admin 2008.11.21 25304
16 운영관리 libjvm.so 찾지 못하여 서버 구동이 되지 않은 경우 admin 2008.11.21 23897
15 응용개발 Attempt to access a closed ResultSet(PreparedStatement) 오류 admin 2008.11.21 27569
14 응용개발 loadjava 사용 시 inner class 로딩은 어떻게? admin 2008.11.21 27327
13 운영관리 64bit OS 에서 사용가능한가요? admin 2008.11.21 17319
12 운영관리 데이터베이스를 다른 머신으로 옮기는 방법 admin 2008.11.21 26840
11 운영관리 HP-ux에서 jvm loading이 실패하는 경우 조치 사항 admin 2008.11.21 22277
10 응용개발 tomcat 5.5 버전 이상에서 dbcp(커넥션 풀링) 설정법 admin 2008.11.21 28354
9 질의작성 데이터 필드의 타입 변경하기 admin 2008.11.21 18226
8 질의작성 예약어를 테이블명이나 컬럼명으로 사용시 admin 2008.11.21 25870
7 응용개발 embedded sql 에서 char 사용시 주의 사항 admin 2008.11.21 18829
» 마이그레이션 MySQL의 limit 명령어 처리 1 admin 2008.11.21 31898
5 응용개발 응용프로그램에서 질의 처리시 commit/rollback 처리 문제 admin 2008.11.21 21193
4 운영관리 백업파일을 이용하여 데이터베이스가 없는 다른 서버에서 복구하는 방법 admin 2008.11.21 21452
3 질의작성 중복된 데이터에 대하여 일련번호를 붙이는 방법 admin 2008.11.21 16963
2 질의작성 중복된 데이터를 1개만 남기고 지우는 방법 admin 2008.11.21 17180
1 질의작성 select 결과중 몇개만 가져오는 방법 admin 2008.11.21 18415
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 Next
/ 14

Contact Cubrid

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