- 카테고리:
LIMIT / FETCH¶
문 또는 하위 쿼리에서 반환되는 최대 행 수를 제한합니다. LIMIT(Postgres 구문) 및 FETCH(ANSI 구문)가 둘 다 지원되며 동일 결과를 생성합니다.
- 참고 항목:
구문¶
-- Postgres syntax
SELECT ...
FROM ...
[ ORDER BY ... ]
LIMIT <count> [ OFFSET <start> ]
[ ... ]
-- ANSI syntax
SELECT ...
FROM ...
[ ORDER BY ... ]
[ OFFSET <start> ] [ { ROW | ROWS } ] FETCH [ { FIRST | NEXT } ] <count> [ { ROW | ROWS } ] [ ONLY ]
[ ... ]
사용법 노트¶
ORDER BY 절은 필요하지 않습니다. 그러나 ORDER BY 절이 없으면 결과는 비결정적입니다. 결과 세트 내의 결과가 반드시 특정 순서로 되어 있지는 않기 때문입니다. 반환된 결과를 제어하려면 ORDER BY 절을 사용하십시오.
count
및start
는 음이 아닌 정수 상수여야 합니다.count
는 반환되는 행 수를 지정합니다.NULL, 빈 문자열(
''
),$$$$
값도 허용되며 “무제한”으로 처리됩니다. 이는 문에 매개 변수를 동적으로 바인딩할 때 불완전한 매개 변수 목록을 수신하는 경우의 커넥터 및 드라이버(예: JDBC 드라이버)에 주로 유용합니다.OFFSET start
은 제한된/페치된 행이 어느 행 이후에 반환되는지 행 번호를 선택적으로 지정합니다.OFFSET
을 생략하면 결과 세트의 첫 번째 행에서 출력이 시작됩니다.NULL, 빈 문자열(
''
),$$$$
값도 허용되며 0으로 처리됩니다(즉, 행을 건너뛰지 않음). 이는 문에 매개 변수를 동적으로 바인딩할 때 불완전한 매개 변수 목록을 수신하는 경우의 커넥터 및 드라이버(예: JDBC 드라이버)에 주로 유용합니다.
ONLY
이 선택적 키워드는 출력에 영향을 주지 않습니다. 이는 읽는 사람에게 강조하기 위한 용도일 뿐입니다.TOP <n>
및LIMIT <카운트>
는 동등합니다.
예¶
다음 예는 LIMIT의 효과를 보여줍니다. 단순화를 위해 이러한 쿼리는 ORDER BY
절을 생략하며, 출력 순서가 첫 번째 쿼리에 표시된 것과 항상 동일하다고 가정합니다. 실제 쿼리에는 ORDER BY가 포함되어야 합니다.
select c1 from testtable; +------+ | C1 | |------| | 1 | | 2 | | 3 | | 20 | | 19 | | 18 | | 1 | | 2 | | 3 | | 4 | | NULL | | 30 | | NULL | +------+ select c1 from testtable limit 3 offset 3; +----+ | C1 | |----| | 20 | | 19 | | 18 | +----+ select c1 from testtable order by c1; +------+ | C1 | |------| | 1 | | 1 | | 2 | | 2 | | 3 | | 3 | | 4 | | 18 | | 19 | | 20 | | 30 | | NULL | | NULL | +------+ select c1 from testtable order by c1 limit 3 offset 3; +----+ | ID | |----| | 2 | | 3 | | 3 | +----+
아래 예는 다음을 나타내기 위해 NULL을 사용하는 방법을 보여줍니다.
행 수에 제한이 없습니다.
행 1에서 시작합니다(행을 건너뛰지 않음)
CREATE TABLE demo1 (i INTEGER); INSERT INTO demo1 (i) VALUES (1), (2);
SELECT * FROM demo1 ORDER BY i LIMIT NULL OFFSET NULL; +---+ | I | |---| | 1 | | 2 | +---+
SELECT * FROM demo1 ORDER BY i LIMIT '' OFFSET ''; +---+ | I | |---| | 1 | | 2 | +---+
SELECT * FROM demo1 ORDER BY i LIMIT $$$$ OFFSET $$$$; +---+ | I | |---| | 1 | | 2 | +---+