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

MySQL에서 여러 열에 조건을 적용하는 방법 – IF() 함수 활용 가이드

MySQL에서 여러 열의 값을 기반으로 조건을 처리해야 하는 경우가 자주 있습니다. 예를 들어 특정 점수(Score)가 일정 기준을 넘는지에 따라 서로 다른 계산 결과를 반환하고 싶다면 IF() 함수를 사용하면 됩니다.

IF() 함수의 기본 문법

IF(조건식, 참일 때 반환할 값, 거짓일 때 반환할 값);

조건식이 TRUE이면 두 번째 인자가, FALSE이면 세 번째 인자가 결과로 반환됩니다. 이제 실제 예제를 통해 살펴보겠습니다.

1. 테이블 생성하기

먼저 세 개의 정수형 열(Number1, Number2, Score)을 가진 테이블을 생성합니다.

mysql> create table DemoTable612 (Number1 int, Number2 int, Score int);
Query OK, 0 rows affected (0.47 sec)

2. 데이터 삽입하기

INSERT 명령어를 사용해 샘플 데이터를 입력합니다.

mysql> insert into DemoTable612 values(10,20,1000);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable612 values(30,40,500);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable612 values(50,70,1200);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable612 values(100,120,400);
Query OK, 1 row affected (0.16 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 전체 레코드를 조회합니다.

mysql> select *from DemoTable612;

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

+---------+---------+-------+
| Number1 | Number2 | Score |
+---------+---------+-------+
|      10 |      20 |  1000 |
|      30 |      40 |   500 |
|      50 |      70 |  1200 |
|     100 |     120 |   400 |
+---------+---------+-------+
4 rows in set (0.00 sec)

4. IF() 함수로 조건 쿼리 작성하기

이제 핵심 부분입니다. Score 값이 500보다 크면 Number1과 Number2를 곱하고, 그렇지 않으면 더하는 조건을 IF() 함수로 구현할 수 있습니다.

mysql> select *, If(Score > 500, Number1*Number2, Number1+Number2) AS Result from DemoTable612;

위 쿼리의 실행 결과는 다음과 같습니다.

+---------+---------+-------+--------+
| Number1 | Number2 | Score | Result |
+---------+---------+-------+--------+
|      10 |      20 |  1000 |    200 |
|      30 |      40 |   500 |     70 |
|      50 |      70 |  1200 |   3500 |
|     100 |     120 |   400 |    220 |
+---------+---------+-------+--------+
4 rows in set (0.00 sec)

결과 분석

출력 결과를 보면 조건이 어떻게 적용되었는지 명확히 알 수 있습니다.

  • 첫 번째 행: Score가 1000으로 500보다 크므로 곱셈이 적용되어 10 × 20 = 200이 반환되었습니다.
  • 두 번째 행: Score가 정확히 500이므로 조건(Score > 500)을 만족하지 않아 덧셈이 적용되어 30 + 40 = 70이 반환되었습니다.
  • 세 번째 행: Score가 1200으로 조건을 만족하므로 50 × 70 = 3500이 반환되었습니다.
  • 네 번째 행: Score가 400으로 조건을 만족하지 않으므로 100 + 120 = 220이 반환되었습니다.

이처럼 IF() 함수를 활용하면 여러 열의 값을 비교·조합하여 행 단위로 다른 연산을 수행하는 동적 쿼리를 손쉽게 작성할 수 있습니다. 더 복잡한 다중 조건이 필요하다면 CASE WHEN 문을 함께 고려해 보는 것도 좋은 방법입니다.