ORDER BY는 기본적으로
SELECT 한 결과물들을 어떻게 정렬할 것인가를 결정해준다
예를 들면
한 유저가 갖고있는 쿠폰목록을 가져오려고 할 때
더 나중에 추가된 쿠폰(최근 쿠폰)부터 차례로 정렬해서 가져오고 싶을 때
ORDER BY coupon_idx DESC // 더 나중에 추가된 쿠폰의 idx부터 내림차순으로(DESC)!
를 SELECT문에 덧붙여주면 된다.
실제 쿼리문을 보자
SELECT coupon_idx, coupon_title, coupon_detail // 가져오려는 칼럼
FROM coupon // 테이블명 : coupon
WHERE user_idx = 3 // user_idx 칼럼이 3인 쿠폰을 선별해라!
ORDER BY coupon_idx DESC // coupon_idx가 큰 것부터 내림차순으로 정렬해라
이렇게 하면 데이터를 서버로 가져와서 2차로 또 정렬하는 노고를 덜 수 있다.
(디비에서 한 번 왔다갔다 할 때 최대한 뽕을 뽑자! (여러번 왔다갔다 하지 말자))
그렇다면
정렬을 한 가지 기준이 아닌,
몇가지의 기준을 동시에 적용할 수도 있을까?
물론 그 기준들에 선순위, 후순위도 있을 것이다
물론이다.
그 기준들을 선순위부터 ORDER BY 옆에 차례로 나열해주면 된다
위의 예에서 보여준 쿠폰은
사용한 쿠폰일 수도 있고, 아직 사용하지 않은 쿠폰일 수 있다.
보통 어플에서는 쿠폰 내역을 나열할 때
이 둘 중 아직 사용하지 않은 쿠폰을 먼저(위에) 보여준다
바로 코드를 보면
coupon_is_used = 0 : 아직 사용하지 않은 것
coupon_is_used = 1 : 사용한 것
SELECT coupon_idx, coupon_title, coupon_detail // 가져오려는 칼럼
FROM coupon // 테이블명 : coupon
WHERE user_idx = 3 // user_idx 칼럼이 3인 쿠폰을 선별해라!
ORDER BY coupon_is_used, coupon_idx DESC // coupon_is_used 칼럼이 추가되었다
ORDER BY 옆에
coupon_is_used 칼럽이 추가되었다.
coupon_is_used가 먼저 쓰임 => 선순위
사용하지않은 쿠폰 -> 사용한 쿠폰 순으로 보여주되,
(기본적으로 ORDER BY는 오름차순(ASC)으로 보여준다)
각각의 안에서 최신순부터 보여준다는 뜻이 된다.
반응형
'인포테인먼트 - development > sql' 카테고리의 다른 글
[MySQL] MySQL 프로파일링 - 쿼리문 성능 비교 (0) | 2020.04.10 |
---|---|
[MySQL] Can't connect to local MySQL server through socket '/tmp/mysql.sock' 에러 해결 (0) | 2020.04.08 |
[MySQL] 프로시저를 사용한 cursor loop fetch 적용(sql의 for문) (0) | 2020.04.06 |
[MySQL] Insert 할 때 특정 컬럼만 select (0) | 2020.03.31 |
[MySQL] 여러 테이블 합쳐서 SELECT하기 - JOIN ~ ON ~ (0) | 2020.03.01 |
댓글