네, MySQL에서는 IF() 함수를 활용하여 SELECT 문 안에서 IF/ELSE와 같은 조건 분기를 구현할 수 있습니다.
예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable721 (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName varchar(100),
Marks int,
CountryName varchar(100)
);
Query OK, 0 rows affected (0.57 sec)데이터 삽입하기
INSERT 명령어를 사용하여 테이블에 샘플 데이터를 입력합니다.
mysql> insert into DemoTable721(FirstName,Marks,CountryName) values('Chris',56,'US');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable721(FirstName,Marks,CountryName) values('Robert',78,'UK');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable721(FirstName,Marks,CountryName) values('Mike',45,'AUS');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable721(FirstName,Marks,CountryName) values('Carol',89,'ENG');
Query OK, 1 row affected (0.22 sec)전체 레코드 조회하기
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable721;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+----+-----------+-------+-------------+ | Id | FirstName | Marks | CountryName | +----+-----------+-------+-------------+ | 1 | Chris | 56 | US | | 2 | Robert | 78 | UK | | 3 | Mike | 45 | AUS | | 4 | Carol | 89 | ENG | +----+-----------+-------+-------------+ 4 rows in set (0.00 sec)
IF() 함수로 조건 분기 구현하기
MySQL의 IF(조건식, 참일 때 값, 거짓일 때 값) 함수를 사용하면 SELECT 문 내에서 조건에 따라 서로 다른 값을 반환할 수 있습니다. 아래 예제에서는 점수(Marks)가 75보다 크면 점수를, 그렇지 않으면 국가명(CountryName)을 출력하도록 처리했습니다.
mysql> select FirstName,IF(Marks > 75,Marks,CountryName) from DemoTable721;
실행 결과는 다음과 같습니다.
+-----------+----------------------------------+ | FirstName | IF(Marks > 75,Marks,CountryName) | +-----------+----------------------------------+ | Chris | US | | Robert | 78 | | Mike | AUS | | Carol | 89 | +-----------+----------------------------------+ 4 rows in set (0.00 sec)
결과를 보면 Robert(78점)와 Carol(89점)은 조건을 만족하여 점수가 그대로 출력되고, Chris(56점)와 Mike(45점)는 조건을 만족하지 않아 국가 코드가 대신 출력된 것을 확인할 수 있습니다.
참고: CASE 표현식 활용하기
조건이 여러 개인 경우에는 CASE WHEN 표현식을 사용하는 것이 더 가독성이 좋습니다.
mysql> select FirstName,
CASE
WHEN Marks > 75 THEN Marks
ELSE CountryName
END AS Result
from DemoTable721;IF() 함수는 단순한 이분법적 조건에 적합하고, CASE 표현식은 다중 조건 분기에 적합하므로 상황에 맞게 선택하여 사용하면 됩니다.