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

MySQL에서 IF/ELSE 조건문과 함께 SELECT 쿼리 활용하기

네, 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 표현식은 다중 조건 분기에 적합하므로 상황에 맞게 선택하여 사용하면 됩니다.