티스토리 뷰

안녕하세요. 오늘은 데이터베이스의 SELECT 명령에서 결과 값으로 반환되는 행을 제한할 수 있는 방법에 대해서 포스팅 하려고 합니다. 여기서는 LIMIT 구문을 통해 결과 값을 제한하는 것에 대해서 알아볼 것이며, LIMIT 구문은 표준 SQL은 아닙니다. MySQL과 PostgreSQL에서 사용할 수 있는 문법이라는 점에 주의해 주시면 됩니다.


사용 방법으로는 아래와 같습니다.

SELECT 열명 FROM 테이블명 WHERE 조건식 LIMIT 행수 // 조건식이 있는 경우

SELECT 열명 FROM 테이블명 LIMIT 행수                 // 조건식이 없는 경우


위의 구문을 토대로 예제를 통해 그 결과 값에 대해서 알아보겠습니다. 우선 sample33에는 숫자로만 된 데이터가 1 ~ 7까지 저장되어 있는 테이블입니다. 


위의 결과 값을 토대로 LIMIT 3 이라는 것은 3개의 데이터만 가져와서 보여주겠다는 의미를 나타냅니다. 또한 이러한 결과를 정렬 후, 제한된 값을 조회할 수 있습니다.



위와 같이 ORDER BY 구문을 통해 no를 내림차순으로 정렬 후, 4개의 데이터만 가져오도록 제한을 한 결과, 7, 6, 5, 4라는 결과 값을 조회해서 화면에 나타내줍니다.


그리고, 오프셋을 지정하여 페이지 나누기 등의 기능을 LIMIT을 통해서 구현할 수 있습니다. 예를들어 한 페이지 당 5건의 데이터를 표시하도록 한다면 첫 번째 페이지의 경우 LIMIT 5로 결과 값을 표현하면 될 것입니다. 그 다음 페이지에서는 6번째 행부터 5건의 데이터를 표시하도록 합니다. 이럴 때 사용하는 것이 오프셋입니다.


SELECT 열명 FROM 테이블명 LIMIT 행수 OFFSET 위치


// OFFSET의 기본 값은 0부터 시작합니다.



위의 구문을 예제를 통해 나타낸 결과 LIMIT 3을 통해 첫 번째 페이지를 나타낼 경우, SELECT * FROM sample33 LIMIT 3 OFFSET 0 으로 나타내면 결과 값으로 1, 2, 3이 나오며, 두 번째 페이지에는 4행 부터 3건의 데이터를 가져와야 하기에 위의 예제와 같이 사용하면 4, 5, 6의 데이터를 가져옵니다. 


위의 내용이 조금 어렵게 나타내져 있는 것처럼 보이기도 하지만 제가 현업에서 더욱 자주 사용했던 방법으로는 아래와 같습니다.


SELECT 열명 FROM 테이블명 LIMIT 시작행, 개수


// 시작행은 기본 값으로 0부터 시작하며 개수에는 몇 건의 데이터를 가져올지 나타내면 됩니다.


위의 구문 또한 예제를 통해 결과 값을 확인해보겠습니다.


위의 결과에서 보듯이 시작 행인 0부터 4건의 데이터를 조회해서 화면에 표시해 줬습니다. 이럴 경우, 첫 번째 페이지에서 4개의 데이터를 표현하는 것으로 나타낼 수 있으며, 두번 째 페이지에서는 5번째 데이터 부터 조회해서 화면에 보여주면 되는데 이것 또한 예제를 통해 결과 값을 확인해 보겠습니다.



위의 결과 값을 확인해보면, 5번째 데이터부터 가져와서 보여줘야 하는데 지금 보시면 시작행이 4로 나타나 있습니다. 이것은 시작 값의 첫 번째 파라미터의 기본 값이 0부터 시작하기 때문이며, 시작 값으로 부터 4개의 데이터를 가져와 화면에 보여줍니다. 현재 데이터가 총 7개 이기 때문에 5, 6, 7만 조회하는 것을 확인할 수 있습니다.


이것으로 MySQL에서 결과 행을 제한 하는 구문인 LIMIT의 사용법에 대해서 알아보았고, 포스팅을 마치도록 하겠습니다 : )