Post

PostgreSQL ROWNUM

1. 동작 원리

ROWNUM은 쿼리 내에서 사용 가능한(실제 컬럼이 아닌) 가상 컬럼(pseudo column)이다. ROWNUM에는 숫자 1, 2, 3, 4, 5 … N의 값이 할당된다. 여기서 N은 ROWNUM과 함께 사용하는 로우의 수를 의미한다.

ROWNUM의 값은 ROW에 영구적으로 할당되지 않는다. 테이블의 ROW는 숫자와 연계되어 참조될 수 없다. 따라서 테이블에서 “row 5”를 요청할 수 있는 방법은 없다. “row 5”라는 것은 존재하지 않기 때문이다.

ROWNUM 값이 할당되는 방법은 쿼리의 조건절이 처리되고 난 이후, 그리고 sort, aggregation 이 수행되기 이전에 할당된다. ROWNUM 값은 할당된 이후에만 증가(increment) 된다.

2. 활용

1
2
3
4
5
6
7
8
9
10
11
sql> SELECT (row_number() over()) AS rownum, id, title FROM board;

+--------+----+-------+
| rownum | id | title |
+--------+----+-------+
|      1 | 10 |   AAA |
|      2 | 20 |   BBB |
|      3 | 30 |   CCC |
|      4 | 40 |   DDD |
|      5 | 50 |   EEE |
+--------+----+-------+

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.