세 번째 필드의 값에 따라 두 필드 중 하나를 선택하려면 MySQL의 IF() 함수를 사용하면 됩니다. 먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
-> (
-> PlayerName varchar(100),
-> PlayerScore int,
-> PlayerStatus varchar(100)
-> );
Query OK, 0 rows affected (0.58 sec)
INSERT 명령을 사용하여 테이블에 레코드를 삽입합니다.
mysql> insert into DemoTable values('John',88,'BAD');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Chris',78,'BAD');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Robert',90,'BAD');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('David',80,'BAD');
Query OK, 1 row affected (0.23 sec)SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+------------+-------------+--------------+
| PlayerName | PlayerScore | PlayerStatus |
+------------+-------------+--------------+
| John | 88 | BAD |
| Chris | 78 | BAD |
| Robert | 90 | BAD |
| David | 80 | BAD |
+------------+-------------+--------------+
4 rows in set (0.00 sec)
다음은 세 번째 필드의 값을 기준으로 두 필드 중 하나를 선택하는 쿼리입니다. PlayerScore가 80보다 크면 PlayerName을 반환하고, 그렇지 않으면 PlayerStatus를 반환합니다.
mysql> select PlayerScore,if(PlayerScore > 80 , PlayerName ,PlayerStatus) AS Result from DemoTable;
출력 결과
+-------------+--------+
| PlayerScore | Result |
+-------------+--------+
| 88 | John |
| 78 | BAD |
| 90 | Robert |
| 80 | BAD |
+-------------+--------+
4 rows in set (0.00 sec)
IF() 함수의 동작 원리
IF() 함수는 IF(조건, 참일_때_값, 거짓일_때_값) 형식으로 사용됩니다. 위 예제에서는 조건 PlayerScore > 80이 참이면 해당 행의 PlayerName 값을, 거짓이면 PlayerStatus 값을 Result라는 별칭으로 출력합니다.
결과를 보면 점수가 88점인 John과 90점인 Robert는 조건을 만족하여 플레이어 이름이 표시되고, 78점인 Chris와 80점인 David는 조건을 만족하지 못해 'BAD' 상태가 그대로 출력된 것을 확인할 수 있습니다. 이처럼 IF() 함수를 활용하면 별도의 애플리케이션 로직 없이 SQL 쿼리 내에서 조건부로 다른 컬럼의 값을 선택할 수 있습니다.