CASE WHEN은 SELECT뿐 아니라 WHERE, ORDER BY에도 쓸 수 있다
페이지 정보

영삼이
본문
✅ CASE WHEN
은 SELECT뿐 아니라 WHERE, ORDER BY에도 쓸 수 있다
조건마다 다른 필터링, 정렬이 필요할 때 강력한 도구
✅ SELECT에서 사용하는 기본 형태
SELECT
name,
CASE
WHEN gender = 'M' THEN '남자'
WHEN gender = 'F' THEN '여자'
ELSE '기타'
END AS gender_label
FROM users;
-
익숙한 사용법
-
조건에 따라 값을 다르게 보여줄 수 있음
✅ WHERE 절에서 조건 분기
SELECT *
FROM orders
WHERE
status = CASE
WHEN is_vip = 1 THEN 'confirmed'
ELSE 'paid'
END;
-
조건마다 다른 필터링 기준 적용
-
복잡한 필터도 1개의 WHERE 안에서 처리 가능
✅ ORDER BY에서 유동적 정렬
SELECT name, signup_date, last_login
FROM users
ORDER BY
CASE
WHEN last_login IS NOT NULL THEN last_login
ELSE signup_date
END DESC;
-
NULL이 있는 필드와 없는 필드를 섞어서 정렬 가능
-
비즈니스 로직에 따라 정렬 우선순위 제어
✔️ CASE WHEN
은 단순 표시용이 아니다.
WHERE, ORDER BY에서도 적극 활용하면 복잡한 로직도 쿼리 한 줄로 표현할 수 있다.
- 이전글JOIN 전에 필터링하면 처리 속도가 훨씬 빨라진다 25.03.28
- 다음글COUNT(*)보다 COUNT(컬럼)이 더 빠를 때가 있다 25.03.28
댓글목록
등록된 댓글이 없습니다.