[Oracle] 특정 컬럼 우선순위 정렬 :: ORDER BY DECODE

동민·2023년 3월 20일

IF~ELSE 조건문으로 사용되는 DECODEORDER BY 절에 넣으면 특정 컬럼의 우선순위에 따라 정렬할 수 있다.

예시) 내가 작성한 글(CUSTOMER_NO 고객번호 기준)이라면 상단의 정렬, 그 외 최신순(INSERT_DATE) 정렬

// MyBatis
SELECT *
  FROM [게시판 테이블]
 ORDER BY DECODE(CUSTOMER_NO, #{custNo}, 1), INSERT_DATE DESC; // #{custNo}: A1
# 게시판테이블
CUSTOMER_NO	| INSERT_DATE	| CONTENTS
------------------------------------------------
A1 ()		| 2023-03-20	| 안녕하세요 반갑습니다.
A1 ()		| 2023-03-19	| 안녕하세요
B1			| 2023-03-21	| 안녕하세요
C1			| 2023-03-20	| 안녕하세요

만약, DECODE ~ DESC 로 주면 최하단 정렬

ORDER BY DECODE(CUSTOMER_NO, #{custNo}, 1) DESC
profile
BE Developer

0개의 댓글