YS's develop story
MySQL ) LIMIT을 활용하여 페이징 쿼리 구현하기 본문
MySQL ) LIMIT을 활용하여 페이징 쿼리 활용하기
아래와 같이 Restaurant라는 테이블이 있습니다.
또한 아래와 같이 Review라는 테이블이 있습니다.
마지막으로 아래와 같은 Area라는 테이블도 있습니다.
아래와 같은 쿼리를 작성하게 되면 식당 이름과 reviewCount, distance를 보여주게 됩니다.
select restaurantName,ifnull(reviewCount, 0) reviewCount,
round(6371 *
acos(cos(radians(areaLatitude)) * cos(radians(restaurantLatitude)) * cos(radians(restaurantLongitude)
- radians(areaLongitude)) + sin(radians(areaLatitude)) * sin(radians(restaurantLatitude))), 2)
AS 'distance'
from Restaurant
inner join Area
left outer join (select restaurantId, count(*) as reviewCount from Review group by restaurantId) ReviewCount
on Restaurant.restaurantId = ReviewCount.restaurantId
where areaName = '성북' and Restaurant.status = 1;
MySQL ) 위도 경도를 활용하여 거리 계산하는 구문 작성하기
이를 보여주는 api를 설계할 때, 한 페이지에 몇 개의 정보를 보여줄지 설정하는 페이징을 지정하여야 합니다.
그렇지 않고 데이터베이스에 있는 모든 정보를 한번에 보내고자 한다면 요청이 매우 느리게 전달될 것입니다.
페이징 설정은 limit를 이용하여 쉽게 할 수 있습니다.
limit 0,2 = 첫번째 정보부터 2개까지의 정보를 보이도록 한다는 의미입니다.
limit 2,2 = 세번째 정보부터 2개까지의 정보를 보이도록 한다는 의미입니다.
이를 통해 API를 설계 할때 page, limit값을 쿼리 스트링으로 받아서
한 화면의 몇개의 정보를 출력할지 직접 설정할 수 있는 것입니다.
예를 들어 한 페이지에 20개씩 출력하고 싶다면
첫 번째 페이지는 page=0, limit=20
두 번째 페이지는 page=20, limit=20
세 번째 페이지는 page=40, limit=20 이런 식으로 사용하게 됩니다.
또한 한 페이지에 5개씩 출력하고 싶다면
첫 번째 페이지는 page=0, limit=5
두 번째 페이지는 page=5, limit=5
세 번째 페이지는 page=10, limit=5 이런 식으로 쿼리 스트링에 값을 넣어서 API를 사용하게 됩니다.
'Database > MySQL' 카테고리의 다른 글
[1822] Failed to add the foreign key constraint MySQL에러 (0) | 2021.05.16 |
---|---|
MySQL ) 중복된 결과를 제거하는 distinct (0) | 2021.03.09 |
MySQL ) 변수에 값을 할당하여 값 마다 다르게 정렬하는 쿼리 짜기 (0) | 2021.02.12 |
MySQL ) left outer join 활용, ifnull 활용 (0) | 2021.02.11 |
MySQL ) 기존 컬럼에서 값을 +1 해주기 (1) | 2021.02.10 |