MySQL CASE 문에서 조건 처리하기 – CASE WHEN 문 활용
MySQL의 CASE 문은 SQL 쿼리 안에서 조건 분기를 처리할 때 유용하게 사용됩니다. 일반적으로 WHERE 절은 행을 필터링하는 용도로 쓰이지만, SELECT 절 내부에서 조건에 따라 다른 값을 반환하려면 CASE WHEN 문을 사용해야 합니다. 아래 예제를 통해 실제 동작 방식을 단계별로 살펴보겠습니다.
1. 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable1040
(
Value1 int,
Value2 int,
Value3 int
);
Query OK, 0 rows affected (0.65 sec)2. 데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable1040 values(10,30,1); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable1040 values(40,20,50); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable1040 values(80,90,100); Query OK, 1 row affected (0.11 sec)
3. 전체 레코드 조회
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable1040;
실행 결과는 다음과 같습니다.
+--------+--------+--------+ | Value1 | Value2 | Value3 | +--------+--------+--------+ | 10 | 30 | 1 | | 40 | 20 | 50 | | 80 | 90 | 100 | +--------+--------+--------+ 3 rows in set (0.00 sec)
4. CASE WHEN 문 적용
다음은 CASE WHEN 문을 활용한 쿼리입니다. Value1이 40이고 Value2가 20인 경우에는 Value2를 반환하고, 그렇지 않으면 Value1을 반환하도록 작성했습니다.
mysql> select case when (Value1=40 AND Value2=20) then Value2 else Value1 end as selectedValue from DemoTable1040;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+---------------+ | selectedValue | +---------------+ | 10 | | 20 | | 80 | +---------------+ 3 rows in set (0.00 sec)
정리
CASE WHEN 문은 SELECT 절 안에서 행 단위로 조건 판단을 수행할 수 있는 강력한 도구입니다. 위 결과에서 두 번째 행(Value1=40, Value2=20)만 조건을 충족해 Value2의 값인 20이 반환된 것을 확인할 수 있습니다. 이처럼 CASE WHEN을 활용하면 WHERE 절처럼 특정 조건을 검사하면서도, 조건 충족 여부에 따라 서로 다른 값을 선택적으로 출력할 수 있습니다.