Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL CASE 표현식에서 OR 조건을 활용하는 방법 총정리

MySQL CASE 표현식에서 OR 조건 다루기

MySQL의 CASE 표현식은 SQL 쿼리 안에서 조건 분기를 처리할 수 있게 해주는 강력한 도구입니다. 여러 개의 WHEN 절을 순차적으로 평가하며, 각 조건이 참일 때 해당 결과값을 반환합니다. 이번 글에서는 CASE 표현식 안에서 마치 OR 조건처럼 동작하는 방식을 샘플 테이블을 만들어 단계별로 살펴보겠습니다.

1단계: 샘플 테이블 생성

먼저 실습에 사용할 예제 테이블을 생성합니다.

mysql> create table caseOrConditionDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name varchar(100),
    -> Score int
    -> );
Query OK, 0 rows affected (0.49 sec)

위 테이블은 학생 이름(Name)과 점수(Score)를 저장하는 구조로, Id는 자동 증가되는 기본 키입니다.

2단계: 데이터 삽입하기

INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into caseOrConditionDemo(Name,Score) values('Larry',85);
Query OK, 1 row affected (0.18 sec)

mysql> insert into caseOrConditionDemo(Name,Score) values('Sam',74);
Query OK, 1 row affected (0.20 sec)

mysql> insert into caseOrConditionDemo(Name,Score) values('Mike',76);
Query OK, 1 row affected (0.16 sec)

mysql> insert into caseOrConditionDemo(Name,Score) values('Carol',65);
Query OK, 1 row affected (0.20 sec)

3단계: 저장된 데이터 확인

SELECT 문으로 테이블에 저장된 전체 레코드를 조회해 보겠습니다.

mysql> select *from caseOrConditionDemo;

실행 결과는 다음과 같습니다.

+----+-------+-------+
| Id | Name  | Score |
+----+-------+-------+
| 1  | Larry | 85    |
| 2  | Sam   | 74    |
| 3  | Mike  | 76    |
| 4  | Carol | 65    |
+----+-------+-------+
4 rows in set (0.00 sec)

4단계: CASE 표현식으로 조건 분기 처리

이제 핵심인 CASE 표현식을 적용해 보겠습니다. 점수(Score) 값에 따라 세 가지 등급으로 나누어 평가 결과를 출력하는 쿼리입니다.

mysql> select Id,Name,Score,
    -> case when Score > 75 then 'Better Score'
    -> when Score > 70 then 'Good Score'
    -> else 'Not Good Score'
    -> end as 'Performance'
    -> from caseOrConditionDemo;

실행 결과는 다음과 같습니다.

+----+-------+-------+----------------+
| Id | Name  | Score | Performance    |
+----+-------+-------+----------------+
| 1  | Larry | 85    | Better Score   |
| 2  | Sam   | 74    | Good Score     |
| 3  | Mike  | 76    | Better Score   |
| 4  | Carol | 65    | Not Good Score |
+----+-------+-------+----------------+
4 rows in set (0.04 sec)

CASE 표현식의 동작 원리 이해하기

CASE 표현식은 위에서부터 아래로 WHEN 조건을 차례대로 검사합니다. 첫 번째로 참이 되는 조건의 결과값을 반환하고, 그 이후의 조건은 더 이상 평가하지 않습니다. 이러한 특성 때문에 여러 조건이 겹치는 상황에서도 논리적인 우선순위가 자연스럽게 적용됩니다.

예를 들어 Mike의 점수는 76점으로 두 조건(75 초과, 70 초과)을 모두 만족하지만, 먼저 작성된 Score > 75 조건이 참이므로 'Better Score'가 반환됩니다. 반면 Sam의 74점은 첫 번째 조건은 만족하지 않고 두 번째 조건만 만족하므로 'Good Score'가 됩니다. 어느 조건에도 해당하지 않는 Carol의 65점은 ELSE 절의 'Not Good Score'가 반환됩니다.

마무리 정리

이처럼 MySQL의 CASE 표현식은 여러 개의 WHEN 절을 통해 OR 조건과 유사한 다중 조건 분기를 손쉽게 구현할 수 있습니다. 조건의 순서가 곧 우선순위가 되기 때문에, 엄격한 조건을 앞쪽에 배치하는 것이 좋습니다. 성적 등급 산정, 상태 코드 변환, 보고서용 카테고리 분류 등 다양한 실무 시나리오에서 유용하게 활용할 수 있습니다.