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

MySQL CASE 문에서 WHERE 절처럼 조건을 걸 수 있나요? CASE WHEN 활용법

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 절처럼 특정 조건을 검사하면서도, 조건 충족 여부에 따라 서로 다른 값을 선택적으로 출력할 수 있습니다.