문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
기술문서:레퍼런스:쿼리:응용:paging_query [2025/03/28 13:18] carlito76 ↷ 문서 이름이 개인문서:임시문서:기술문서:레퍼런스:쿼리:응용:paging에서 개인문서:임시문서:기술문서:레퍼런스:쿼리:응용:paging_query(으)로 바뀌었습니다 |
기술문서:레퍼런스:쿼리:응용:paging_query [2025/11/27 11:55] (현재) carlito76 |
||
|---|---|---|---|
| 줄 6: | 줄 6: | ||
| ====== Paging Query ====== | ====== Paging Query ====== | ||
| - | ^ 물리명 | + | <note tip> |
| - | | 일련번호 | sn | 숫자 | PK | | + | 최소 지원 버전은 약간의 차이가 있을 수 있습니다. |
| - | | 제목 | title | 문자 | | | + | </ |
| - | | 내용 | content | 문자 | | | + | |
| + | ===== 테이블 명세 ===== | ||
| + | ^ 물리명 | ||
| + | | 일련번호 | sn | 숫자형 | | PK | | ||
| + | | 제목 | title | 문자형 | 100 | | | ||
| + | | 내용 | content | 문자형 | 4000 | | | ||
| + | |||
| + | ===== SQL 스크립트 ===== | ||
| <sxh sql; gutter: true; title: DDL;> | <sxh sql; gutter: true; title: DDL;> | ||
| - | -- MySQL/ | ||
| CREATE TABLE ex_paging ( | CREATE TABLE ex_paging ( | ||
| - | sn BIGINT | + | sn INT NOT NULL PRIMARY KEY, |
| title VARCHAR(100) NOT NULL, | title VARCHAR(100) NOT NULL, | ||
| - | content | + | content VARCHAR(4000) NOT NULL |
| - | ); | + | |
| - | + | ||
| - | -- Oracle/ | + | |
| - | CREATE TABLE ex_paging ( | + | |
| - | sn NUMBER NOT NULL PRIMARY KEY, | + | |
| - | title | + | |
| - | content CLOB NOT NULL | + | |
| ); | ); | ||
| </ | </ | ||
| 줄 39: | 줄 37: | ||
| INSERT INTO ex_paging (sn, title, content) VALUES (10, ' | INSERT INTO ex_paging (sn, title, content) VALUES (10, ' | ||
| INSERT INTO ex_paging (sn, title, content) VALUES (11, ' | INSERT INTO ex_paging (sn, title, content) VALUES (11, ' | ||
| + | INSERT INTO ex_paging (sn, title, content) VALUES (12, ' | ||
| + | INSERT INTO ex_paging (sn, title, content) VALUES (13, ' | ||
| + | INSERT INTO ex_paging (sn, title, content) VALUES (14, ' | ||
| + | INSERT INTO ex_paging (sn, title, content) VALUES (15, ' | ||
| + | INSERT INTO ex_paging (sn, title, content) VALUES (16, ' | ||
| + | INSERT INTO ex_paging (sn, title, content) VALUES (17, ' | ||
| + | INSERT INTO ex_paging (sn, title, content) VALUES (18, ' | ||
| + | INSERT INTO ex_paging (sn, title, content) VALUES (19, ' | ||
| + | INSERT INTO ex_paging (sn, title, content) VALUES (20, ' | ||
| </ | </ | ||
| ===== MySQL/ | ===== MySQL/ | ||
| - | <sxh sql; gutter: true;> | + | <sxh sql; gutter: true; highlight: [19];> |
| - | -- FIXME | + | /* |
| + | MySQL 5.0.12 이상/ | ||
| + | */ | ||
| + | SELECT | ||
| + | t.*, @ROWNUM AS " | ||
| + | FROM | ||
| + | (SELECT | ||
| + | p.*, @ROWNUM := @ROWNUM + 1 AS " | ||
| + | FROM | ||
| + | ( | ||
| + | -- ↑↑↑ 페이징 쿼리 ↑↑↑ | ||
| + | SELECT | ||
| + | * | ||
| + | FROM | ||
| + | ex_paging | ||
| + | ORDER BY | ||
| + | sn DESC | ||
| + | -- ↓↓↓ 페이징 쿼리 ↓↓ | ||
| + | LIMIT 18446744073709551615) p | ||
| + | , (SELECT @ROWNUM := 0) r | ||
| + | ) t | ||
| + | ORDER BY | ||
| + | t._rownum_ ASC | ||
| + | -- 1 페이지 | ||
| + | LIMIT 10 OFFSET 0 | ||
| + | -- 2 페이지 | ||
| + | -- LIMIT 10 OFFSET 10 | ||
| + | ; | ||
| </ | </ | ||
| ===== MSSQL ===== | ===== MSSQL ===== | ||
| - | <sxh sql; gutter: true;> | + | <sxh sql; gutter: true; highlight: [12-13];> |
| - | -- FIXME | + | /* |
| + | MSSQL 2005 이상 | ||
| + | */ | ||
| + | SELECT | ||
| + | t.*, (t._total_count_ | ||
| + | FROM | ||
| + | (SELECT | ||
| + | p.*, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS " | ||
| + | FROM | ||
| + | ( | ||
| + | -- ↑↑↑ 페이징 쿼리 ↑↑↑ | ||
| + | SELECT TOP (99.999) PERCENT | ||
| + | -- SELECT TOP (9223372036854775807) | ||
| + | * | ||
| + | FROM | ||
| + | ex_paging | ||
| + | ORDER BY | ||
| + | sn DESC | ||
| + | -- ↓↓↓ 페이징 쿼리 ↓↓↓ | ||
| + | ) p | ||
| + | ) t | ||
| + | WHERE | ||
| + | -- 1 페이지 | ||
| + | t._rownum_ BETWEEN 1 AND 10 | ||
| + | -- 2 페이지 | ||
| + | -- t._rownum_ BETWEEN 11 AND 20 | ||
| + | ; | ||
| </ | </ | ||
| ===== Oracle/ | ===== Oracle/ | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| - | -- FIXME | + | /* |
| + | Oracle 9i 이상/ | ||
| + | */ | ||
| + | SELECT | ||
| + | t.*, (" | ||
| + | FROM | ||
| + | (SELECT | ||
| + | p.*, ROWNUM AS " | ||
| + | FROM | ||
| + | ( | ||
| + | -- ↑↑↑ 페이징 쿼리 ↑↑↑ | ||
| + | SELECT | ||
| + | * | ||
| + | FROM | ||
| + | ex_paging | ||
| + | ORDER BY | ||
| + | sn DESC | ||
| + | -- ↓↓↓ 페이징 쿼리 ↓↓↓ | ||
| + | ) p | ||
| + | ) t | ||
| + | WHERE | ||
| + | -- 1 페이지 | ||
| + | " | ||
| + | -- 2 페이지 | ||
| + | -- " | ||
| + | ; | ||
| </ | </ | ||
| ===== PostgreSQL ===== | ===== PostgreSQL ===== | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| - | -- FIXME | + | /* |
| + | PostgreSQL 8.4 이상 | ||
| + | */ | ||
| + | SELECT | ||
| + | t.*, (t._total_count_ | ||
| + | FROM | ||
| + | (SELECT | ||
| + | p.*, ROW_NUMBER() OVER() AS " | ||
| + | FROM | ||
| + | ( | ||
| + | -- ↑↑↑ 페이징 쿼리 ↑↑↑ | ||
| + | SELECT | ||
| + | * | ||
| + | FROM | ||
| + | ex_paging | ||
| + | ORDER BY | ||
| + | sn DESC | ||
| + | -- ↓↓↓ 페이징 쿼리 ↓↓ | ||
| + | ) p | ||
| + | ) t | ||
| + | -- 1 페이지 | ||
| + | LIMIT 10 OFFSET 0 | ||
| + | -- 2 페이지 | ||
| + | -- LIMIT 10 OFFSET 10 | ||
| + | ; | ||
| </ | </ | ||
| + | |||
| + | {{tag>" | ||