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

MySQL에서 선택한 값이 '0'일 때 다른 열의 값을 대신 선택하는 방법

MySQL에서 특정 열의 값이 '0'일 경우, 같은 행에 있는 다른 열의 값을 대신 가져와야 하는 경우가 종종 있습니다. 이럴 때 IF() 함수를 사용하면 간단하게 해결할 수 있습니다.

IF() 함수 기본 문법

IF() 함수는 첫 번째 인자로 주어진 조건을 평가합니다. 조건이 참(true)이면 두 번째 인자를 반환하고, 거짓(false)이면 세 번째 인자를 반환합니다. 즉, 첫 번째 열의 값이 0이면 두 번째 열의 값을, 그렇지 않으면 첫 번째 열의 값을 그대로 출력하게 됩니다.

select IF(yourColumnName1=0,yourColumnName2,yourColumnName1) as anyAliasName
from yourTableName;

예제 테이블 생성

먼저 실습에 사용할 테이블을 생성해 보겠습니다.

mysql> create table demo30
-> (
-> id int not null auto_increment primary key,
-> value int,
-> original_value int
-> )
-> ;
Query OK, 0 rows affected (1.87 sec)

데이터 삽입

insert 명령을 사용하여 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into demo30(value,original_value) values(50,10);
Query OK, 1 row affected (0.10 sec)

mysql> insert into demo30(value,original_value) values(1000,0);
Query OK, 1 row affected (0.13 sec)

mysql> insert into demo30(value,original_value) values(0,40);
Query OK, 1 row affected (0.15 sec)

mysql> insert into demo30(value,original_value) values(30,0);
Query OK, 1 row affected (0.09 sec)

테이블 데이터 확인

select 문으로 테이블의 레코드를 조회해 보겠습니다.

mysql> select *from demo30;

위 쿼리는 다음과 같은 결과를 출력합니다.

+----+-------+----------------+
| id | value | original_value |
+----+-------+----------------+
| 1  | 50    | 10             |
| 2  | 1000  | 0              |
| 3  | 0     | 40             |
| 4  | 30    | 0              |
+----+-------+----------------+
4 rows in set (0.00 sec)

값이 '0'일 때 다른 열 선택하기

다음은 MySQL에서 선택한 값(original_value)이 '0'일 때 다른 열(value)의 값을 대신 선택하는 쿼리입니다.

mysql> select id, if(original_value= 0,value,original_value) as Result
-> from demo30;

실행 결과는 아래와 같습니다.

+----+--------+
| id | Result |
+----+--------+
|  1 | 10     |
|  2 | 1000   |
|  3 | 40     |
|  4 | 30     |
+----+--------+
4 rows in set (0.00 sec)

결과 분석

출력 결과를 살펴보면 다음과 같은 규칙이 적용된 것을 확인할 수 있습니다.

  • id 1: original_value가 10이므로 그대로 10이 출력됩니다.
  • id 2: original_value가 0이므로 value인 1000이 대신 출력됩니다.
  • id 3: original_value가 40이므로 그대로 40이 출력됩니다.
  • id 4: original_value가 0이므로 value인 30이 대신 출력됩니다.

이처럼 IF() 함수를 활용하면 조건에 따라 다른 열의 값을 유연하게 선택할 수 있으며, CASE 표현식보다 더 간결한 코드로 동일한 로직을 구현할 수 있다는 장점이 있습니다.