CASE WHEN THEN은 MySQL에서 조건문을 작성할 때 사용되는 구문으로, 특정 조건에 따라 다른 결과를 반환할 수 있도록 도와줍니다. SQL 쿼리에서 IF-ELSE와 유사한 기능을 하며, 주로 SELECT 문이나 UPDATE 문에서 많이 사용됩니다.
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE result_default
END
설명:
CASE: 조건문을 시작합니다.
WHEN condition1: 첫 번째 조건을 정의합니다.
THEN result1: 첫 번째 조건이 참(TRUE)일 때 반환할 결과를 정의합니다.
WHEN condition2: 두 번째 조건을 정의합니다.
THEN result2: 두 번째 조건이 참일 때 반환할 결과를 정의합니다.
ELSE: 위의 조건이 모두 만족하지 않을 경우 반환할 기본 결과를 정의합니다. (ELSE는 선택 사항이며, 없을 경우 해당 조건이 맞지 않는 행은 NULL을 반환합니다.)
END: CASE 문을 종료합니다.
예시 1: 성적에 따라 등급 부여
SELECT student_name,
score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
ELSE 'D'
END AS grade
FROM students;
이 쿼리는 각 학생의 성적(score)을 기준으로 점수에 따라 등급(grade)을 부여합니다.
score >= 90이면 'A'
score >= 80이면 'B'
score >= 70이면 'C'
그 외에는 'D'로 표시됩니다.
예시 2: UPDATE에서 사용
UPDATE employees
SET salary =
CASE
WHEN job_title = 'Manager' THEN salary * 1.10
WHEN job_title = 'Developer' THEN salary * 1.05
ELSE salary
END;
이 쿼리는 직원들의 직무에 따라 급여를 인상합니다.
job_title이 'Manager'인 경우 급여를 10% 인상합니다.
job_title이 'Developer'인 경우 급여를 5% 인상합니다.
그 외의 직무는 급여를 그대로 유지합니다.
예시 3: 복잡한 조건 처리
SELECT product_name,
price,
CASE
WHEN price > 100 THEN 'Expensive'
WHEN price BETWEEN 50 AND 100 THEN 'Moderate'
ELSE 'Cheap'
END AS price_category
FROM products;
이 쿼리는 가격(price)에 따라 제품의 가격 범주를 정의합니다.
가격이 100보다 크면 'Expensive'
가격이 50에서 100 사이면 'Moderate'
그 외의 경우에는 'Cheap'으로 분류됩니다.
요약
CASE WHEN THEN은 조건에 따라 다른 값을 반환하고 싶을 때 사용하는 구문입니다.
여러 조건을 순차적으로 검사하고, 조건에 맞는 결과를 반환합니다.
ELSE 구문은 선택 사항으로, 조건이 모두 만족되지 않을 때 반환할 기본 값을 설정합니다.
이를 통해 복잡한 조건 처리나 계산을 쉽게 할 수 있습니다.