Top N 쿼리
κ²°κ³Ό μ§ν©μμ μμ Nκ°μ νμ λ°ννλ 쿼리
μ’ λ₯
β’
ROWNUM
β’
ROWID
ROWNUM
SELECT λ¬Έμ λ
Όλ¦¬μ μΈ μλ²μ λνλ΄λ κ°μμ 컬λΌ
νμ΄μ§ μ²λ¦¬(Paging)λ?
νμ΄μ§ μ²λ¦¬λ λλμ λ°μ΄ν°λ₯Ό ν λ²μ λͺ¨λ μ‘°ννμ§ μκ³ , μΌμ ν κ°μλ‘ λλμ΄ νμ΄μ§ λ¨μλ‘ μ‘°ννλ κΈ°λ²μ
λλ€. μλ₯Ό λ€μ΄, κ²μνμ 1,000κ°μ κ²μκΈμ΄ μμ λ ν νμ΄μ§μ 10κ°μ© 보μ¬μ£Όλ©΄ μ΄ 100νμ΄μ§κ° μμ±λ©λλ€.
νμ΄μ§ μ²λ¦¬μ μ£Όμ λͺ©μ :
β’
μ±λ₯ ν₯μ: νμν λ°μ΄ν°λ§ μ‘°ννμ¬ DB λΆνλ₯Ό μ€μ΄κ³ μλ΅ μλλ₯Ό κ°μ ν©λλ€.
β’
μ¬μ©μ κ²½ν κ°μ : ν νλ©΄μ μ μ ν μμ λ°μ΄ν°λ₯Ό 보μ¬μ€μΌλ‘μ¨ κ°λ
μ±κ³Ό νΈμμ±μ λμ
λλ€.
β’
λ©λͺ¨λ¦¬ ν¨μ¨: μ 체 λ°μ΄ν°λ₯Ό λ©λͺ¨λ¦¬μ λ‘λνμ§ μμ μλ² μμμ ν¨μ¨μ μΌλ‘ μ¬μ©ν©λλ€.
Oracleμμλ ROWNUMμ νμ©νμ¬ νμ΄μ§ μ²λ¦¬λ₯Ό ꡬννλ©°, μνλ λ²μμ λ°μ΄ν°λ§ μΆμΆν μ μμ΅λλ€.
ROWNUM λ₯Ό νμ©ν νμ΄μ§ μ²λ¦¬
SELECT *
FROM (
SELECT ROWNUM AS row_num, no, title, content
FROM board
WHERE ROWNUM <= 10 -- μνλ νμ΄μ§ ν¬κΈ°λ₯Ό μ¬κΈ°μ μ§μ ν©λλ€.
)
WHERE row_num >= 1; -- μνλ νμ΄μ§ λ²νΈμ λ§κ² μμνλ ν λ²νΈλ₯Ό μ¬κΈ°μ μ§μ ν©λλ€.
SQL
볡μ¬
board ν μ΄λΈ μμ± λ° μν λ°μ΄ν°
-- DDL
CREATE TABLE board (
no NUMBER NOT NULL,
title varchar2(100) NOT NULL,
writer varchar2(100) NOT NULL,
content varchar2(1000),
reg_date DATE DEFAULT sysdate NOT NULL,
upd_date DATE DEFAULT sysdate NOT NULL,
views NUMBER DEFAULT 0 NOT NULL,
PRIMARY KEY (no)
);
SQL
볡μ¬
-- μν λ°μ΄ν°
INTO board (title, writer, content) VALUES ('μ λͺ© 1', 'μμ±μ 1', 'λ΄μ© 1');
INTO board (title, writer, content) VALUES ('μ λͺ© 2', 'μμ±μ 2', 'λ΄μ© 2');
INTO board (title, writer, content) VALUES ('μ λͺ© 3', 'μμ±μ 3', 'λ΄μ© 3');
INTO board (title, writer, content) VALUES ('μ λͺ© 4', 'μμ±μ 4', 'λ΄μ© 4');
INTO board (title, writer, content) VALUES ('μ λͺ© 5', 'μμ±μ 5', 'λ΄μ© 5');
INTO board (title, writer, content) VALUES ('μ λͺ© 6', 'μμ±μ 6', 'λ΄μ© 6');
INTO board (title, writer, content) VALUES ('μ λͺ© 7', 'μμ±μ 7', 'λ΄μ© 7');
INTO board (title, writer, content) VALUES ('μ λͺ© 8', 'μμ±μ 8', 'λ΄μ© 8');
INTO board (title, writer, content) VALUES ('μ λͺ© 9', 'μμ±μ 9', 'λ΄μ© 9');
INTO board (title, writer, content) VALUES ('μ λͺ© 10', 'μμ±μ 10', 'λ΄μ© 10');
INTO board (title, writer, content) VALUES ('μ λͺ© 1', 'μμ±μ 1', 'λ΄μ© 1');
INTO board (title, writer, content) VALUES ('μ λͺ© 2', 'μμ±μ 2', 'λ΄μ© 2');
INTO board (title, writer, content) VALUES ('μ λͺ© 3', 'μμ±μ 3', 'λ΄μ© 3');
INTO board (title, writer, content) VALUES ('μ λͺ© 4', 'μμ±μ 4', 'λ΄μ© 4');
INTO board (title, writer, content) VALUES ('μ λͺ© 5', 'μμ±μ 5', 'λ΄μ© 5');
INTO board (title, writer, content) VALUES ('μ λͺ© 6', 'μμ±μ 6', 'λ΄μ© 6');
INTO board (title, writer, content) VALUES ('μ λͺ© 7', 'μμ±μ 7', 'λ΄μ© 7');
INTO board (title, writer, content) VALUES ('μ λͺ© 8', 'μμ±μ 8', 'λ΄μ© 8');
INTO board (title, writer, content) VALUES ('μ λͺ© 9', 'μμ±μ 9', 'λ΄μ© 9');
INTO board (title, writer, content) VALUES ('μ λͺ© 10', 'μμ±μ 10', 'λ΄μ© 10');
INTO board (title, writer, content) VALUES ('μ λͺ© 1', 'μμ±μ 1', 'λ΄μ© 1');
INTO board (title, writer, content) VALUES ('μ λͺ© 2', 'μμ±μ 2', 'λ΄μ© 2');
INTO board (title, writer, content) VALUES ('μ λͺ© 3', 'μμ±μ 3', 'λ΄μ© 3');
INTO board (title, writer, content) VALUES ('μ λͺ© 4', 'μμ±μ 4', 'λ΄μ© 4');
INTO board (title, writer, content) VALUES ('μ λͺ© 5', 'μμ±μ 5', 'λ΄μ© 5');
INTO board (title, writer, content) VALUES ('μ λͺ© 6', 'μμ±μ 6', 'λ΄μ© 6');
INTO board (title, writer, content) VALUES ('μ λͺ© 7', 'μμ±μ 7', 'λ΄μ© 7');
INTO board (title, writer, content) VALUES ('μ λͺ© 8', 'μμ±μ 8', 'λ΄μ© 8');
INTO board (title, writer, content) VALUES ('μ λͺ© 9', 'μμ±μ 9', 'λ΄μ© 9');
INTO board (title, writer, content) VALUES ('μ λͺ© 10', 'μμ±μ 10', 'λ΄μ© 10');
INTO board (title, writer, content) VALUES ('μ λͺ© 1', 'μμ±μ 1', 'λ΄μ© 1');
INTO board (title, writer, content) VALUES ('μ λͺ© 2', 'μμ±μ 2', 'λ΄μ© 2');
INTO board (title, writer, content) VALUES ('μ λͺ© 3', 'μμ±μ 3', 'λ΄μ© 3');
INTO board (title, writer, content) VALUES ('μ λͺ© 4', 'μμ±μ 4', 'λ΄μ© 4');
INTO board (title, writer, content) VALUES ('μ λͺ© 5', 'μμ±μ 5', 'λ΄μ© 5');
INTO board (title, writer, content) VALUES ('μ λͺ© 6', 'μμ±μ 6', 'λ΄μ© 6');
INTO board (title, writer, content) VALUES ('μ λͺ© 7', 'μμ±μ 7', 'λ΄μ© 7');
INTO board (title, writer, content) VALUES ('μ λͺ© 8', 'μμ±μ 8', 'λ΄μ© 8');
INTO board (title, writer, content) VALUES ('μ λͺ© 9', 'μμ±μ 9', 'λ΄μ© 9');
INTO board (title, writer, content) VALUES ('μ λͺ© 10', 'μμ±μ 10', 'λ΄μ© 10');
INTO board (title, writer, content) VALUES ('μ λͺ© 1', 'μμ±μ 1', 'λ΄μ© 1');
INTO board (title, writer, content) VALUES ('μ λͺ© 2', 'μμ±μ 2', 'λ΄μ© 2');
INTO board (title, writer, content) VALUES ('μ λͺ© 3', 'μμ±μ 3', 'λ΄μ© 3');
INTO board (title, writer, content) VALUES ('μ λͺ© 4', 'μμ±μ 4', 'λ΄μ© 4');
INTO board (title, writer, content) VALUES ('μ λͺ© 5', 'μμ±μ 5', 'λ΄μ© 5');
INTO board (title, writer, content) VALUES ('μ λͺ© 6', 'μμ±μ 6', 'λ΄μ© 6');
INTO board (title, writer, content) VALUES ('μ λͺ© 7', 'μμ±μ 7', 'λ΄μ© 7');
INTO board (title, writer, content) VALUES ('μ λͺ© 8', 'μμ±μ 8', 'λ΄μ© 8');
INTO board (title, writer, content) VALUES ('μ λͺ© 9', 'μμ±μ 9', 'λ΄μ© 9');
INTO board (title, writer, content) VALUES ('μ λͺ© 10', 'μμ±μ 10', 'λ΄μ© 10');
SQL
볡μ¬
ROWID
κ° νμ κ³ μ νκ² μλ³νλλ° μ¬μ©λλ μλ³μ
κ΅¬μ± μμ | μ€λͺ
|
μ€λΈμ νΈ λ²νΈ | ROWIDκ° μν κ°μ²΄(ν
μ΄λΈ λλ ν΄λ¬μ€ν°)μ κ³ μ ν λ²νΈλ₯Ό λνλ
λλ€. |
μλ νμΌ λ²νΈ | νμ΄ μ μ₯λ μλμ μΈ λ°μ΄ν° νμΌ λ²νΈλ₯Ό λνλ
λλ€. |
λΈλ‘ λ²νΈ | νμ΄ μ μ₯λ λ°μ΄ν° λΈλ‘μ λ²νΈλ₯Ό λνλ
λλ€. |
λ°μ΄ν° λ²νΈ | λΈλ‘ λ΄μμμ νμ μλμ μΈ μμΉλ₯Ό λνλ
λλ€. |
β’
ROWID μμμ½λ
SELECT ROWID
, employee_id
, first_name
FROM employees
WHERE department_id = 30;
SQL
볡μ¬



