본문 바로가기
  • 포르쉐타고싶다
인포테인먼트 - development/sql

[MySQL] ORDER BY에 여러가지 기준과 선순위/후순위가 있을 때

by 지오ㄴl 2020. 3. 3.

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)으로 보여준다)

각각의 안에서 최신순부터 보여준다는 뜻이 된다.

반응형

댓글