문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
기술문서:레퍼런스:쿼리:응용:paging_query [2025/04/03 10:27] carlito76 |
기술문서:레퍼런스:쿼리:응용: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 ( | ||
| - | sn BIGINT NOT NULL PRIMARY KEY, | ||
| - | title VARCHAR(100) NOT NULL, | ||
| - | content TEXT NOT NULL | ||
| - | ); | ||
| - | |||
| - | -- Oracle/ | ||
| CREATE TABLE ex_paging ( | CREATE TABLE ex_paging ( | ||
| - | sn NUMBER | + | sn INT NOT NULL PRIMARY KEY, |
| title VARCHAR(100) NOT NULL, | title VARCHAR(100) NOT NULL, | ||
| - | content | + | content |
| ); | ); | ||
| </ | </ | ||
| 줄 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 (12, ' |
| - | INSERT INTO ex_paging (sn, title, content) VALUES (13, ' | + | 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 (14, ' |
| - | INSERT INTO ex_paging (sn, title, content) VALUES (15, ' | + | 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 (16, ' |
| - | INSERT INTO ex_paging (sn, title, content) VALUES (17, ' | + | 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 (18, ' |
| - | INSERT INTO ex_paging (sn, title, content) VALUES (19, ' | + | INSERT INTO ex_paging (sn, title, content) VALUES (19, ' |
| - | INSERT INTO ex_paging (sn, title, content) VALUES (20, ' | + | INSERT INTO ex_paging (sn, title, content) VALUES (20, ' |
| </ | </ | ||
| ===== MySQL/ | ===== MySQL/ | ||
| - | <sxh sql; gutter: true;> | + | <sxh sql; gutter: true; highlight: [19];> |
| + | /* | ||
| + | MySQL 5.0.12 이상/ | ||
| + | */ | ||
| SELECT | SELECT | ||
| t.*, @ROWNUM AS " | t.*, @ROWNUM AS " | ||
| 줄 72: | 줄 73: | ||
| ORDER BY | ORDER BY | ||
| t._rownum_ ASC | t._rownum_ ASC | ||
| + | -- 1 페이지 | ||
| LIMIT 10 OFFSET 0 | LIMIT 10 OFFSET 0 | ||
| + | -- 2 페이지 | ||
| + | -- LIMIT 10 OFFSET 10 | ||
| ; | ; | ||
| </ | </ | ||
| ===== MSSQL ===== | ===== MSSQL ===== | ||
| - | <sxh sql; gutter: true; highlight: [10];> | + | <sxh sql; gutter: true; highlight: [12-13];> |
| - | -- MSSQL 2005 이상 | + | /* |
| + | MSSQL 2005 이상 | ||
| + | */ | ||
| SELECT | SELECT | ||
| t.*, (t._total_count_ - t._rownum_ + 1) AS " | t.*, (t._total_count_ - t._rownum_ + 1) AS " | ||
| 줄 87: | 줄 93: | ||
| ( | ( | ||
| -- ↑↑↑ 페이징 쿼리 ↑↑↑ | -- ↑↑↑ 페이징 쿼리 ↑↑↑ | ||
| - | SELECT TOP 100 PERCENT | + | SELECT TOP (99.999) |
| + | -- SELECT TOP (9223372036854775807) | ||
| * | * | ||
| FROM | FROM | ||
| 줄 97: | 줄 104: | ||
| ) t | ) t | ||
| WHERE | WHERE | ||
| + | -- 1 페이지 | ||
| t._rownum_ BETWEEN 1 AND 10 | t._rownum_ BETWEEN 1 AND 10 | ||
| + | -- 2 페이지 | ||
| + | -- t._rownum_ BETWEEN 11 AND 20 | ||
| ; | ; | ||
| </ | </ | ||
| 줄 103: | 줄 113: | ||
| ===== Oracle/ | ===== Oracle/ | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| + | /* | ||
| + | Oracle 9i 이상/ | ||
| + | */ | ||
| SELECT | SELECT | ||
| t.*, (" | t.*, (" | ||
| 줄 121: | 줄 134: | ||
| ) t | ) t | ||
| WHERE | WHERE | ||
| + | -- 1 페이지 | ||
| " | " | ||
| + | -- 2 페이지 | ||
| + | -- " | ||
| ; | ; | ||
| </ | </ | ||
| 줄 127: | 줄 143: | ||
| ===== PostgreSQL ===== | ===== PostgreSQL ===== | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| + | /* | ||
| + | PostgreSQL 8.4 이상 | ||
| + | */ | ||
| SELECT | SELECT | ||
| t.*, (t._total_count_ - t._rownum_ + 1) AS " | t.*, (t._total_count_ - t._rownum_ + 1) AS " | ||
| 줄 144: | 줄 163: | ||
| ) p | ) p | ||
| ) t | ) t | ||
| + | -- 1 페이지 | ||
| LIMIT 10 OFFSET 0 | LIMIT 10 OFFSET 0 | ||
| + | -- 2 페이지 | ||
| + | -- LIMIT 10 OFFSET 10 | ||
| ; | ; | ||
| </ | </ | ||
| + | |||
| + | {{tag>" | ||