mysql

[mysql] limit 활용법

익시토스 2022. 6. 22. 10:07

게시판을 만들다가 게시글 상세페이지에서 문제가 발생해 글을 적는다.

 

게시글 상세 페이지 기능 중 앞 뒤의 게시글을 idx를 통하여 가져오고 del_YN 이라는 컬럼을 통해서 삭제 여부를 가려 가져와야 되는 상황이였다. (조건이 2개이고 가져와야하는 글은 1개, 이 데이터로 해당 글의 상세페이지로 넘어가는 역할을 하는 기능).

 

시도했던 부분

 

1. 자바에서 조건문을 통하여 앞 뒤 글을 가져오려고 했지만 결괏값이 null이 들어와 비교를 할 수가 없었다. 

2. 쿼리를 고쳐서 해보려고 해도 특정 개수의 값을 가져오는 법을 몰랐었다. 

 

이렇게 조건에 따른 하나 또는 특정 개수의 데이터를 가져올 때 Limit를 사용한다. 

 

 

 

이처럼 조건문 + 정렬을 통해 게시글의 다음 글을 limit 1 로 1개의 개수를 뽑아낼 수 있었다.

 

또한 offset을 설정해 해당 조건에서 몇번째부터 출력을 할지 여부도 설정이 가능하다. 즉 limit 10, 5 를 하면 쿼리의 해당 조건의 5번째 라인 이후 6번째부터 10개를 출력한다는 의미이다. mysql에서 paging을 활용할 때도 이렇게 limit를 통해 몇개의 데이터를 뽑아내는지 출력할 수 있다.

 

+ 추가 내용

상사님의 조언으로 세개의 쿼리를 하나로 합쳐서 하나의 쿼리로 결괏값을 받을 수 있다고 하셨다. 서브쿼리나 join을 사용하면 된다고 하셨는데 Union을 사용하면 쉽게 할 수 있다는 것을 알게 됨

이처럼 mysql에서는 서브쿼리의 중간에 union을 사용해서 간단하게 하나의 쿼리로 출력하게 할 수 있다.