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

MySQL SELECT 문에서 IF/ELSE 조건문 사용하는 방법

MySQL SELECT 문에서 IF 조건 활용하기

MySQL에서는 IF() 함수를 사용하여 SELECT 쿼리 안에서 조건 분기(if/else) 로직을 간단하게 구현할 수 있습니다. 이 함수는 세 개의 인자를 받습니다. 첫 번째는 평가할 조건식, 두 번째는 조건이 참(TRUE)일 때 반환할 값, 세 번째는 조건이 거짓(FALSE)일 때 반환할 값입니다.

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

mysql> create table DemoTable1966
(
  UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  UserName varchar(20),
  PhotoLiked int
);
Query OK, 0 rows affected (0.00 sec)

INSERT 명령을 사용하여 테이블에 샘플 데이터를 삽입합니다.

mysql> insert into DemoTable1966(UserName,PhotoLiked) values('Chris',57);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1966(UserName,PhotoLiked) values('David',100);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1966(UserName,PhotoLiked) values('Mike',68);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1966(UserName,PhotoLiked) values('Sam',78);
Query OK, 1 row affected (0.00 sec)

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

mysql> select * from DemoTable1966;

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

+--------+----------+------------+
| UserId | UserName | PhotoLiked |
+--------+----------+------------+
|      1 | Chris    |         57 |
|      2 | David    |        100 |
|      3 | Mike     |         68 |
|      4 | Sam      |         78 |
+--------+----------+------------+
4 rows in set (0.00 sec)

이제 MySQL의 SELECT 문에서 if/else 조건을 적용하는 쿼리를 살펴보겠습니다. 아래 예제에서는 좋아요 수(PhotoLiked)가 75보다 크면 해당 사용자의 이름을 반환하고, 그렇지 않으면 'Likes are less'(좋아요 수 부족)라는 문자열을 반환합니다.

mysql> select if(PhotoLiked > 75,UserName,'Likes are less') as Result from DemoTable1966;

출력 결과는 다음과 같습니다.

+------------------------------------------------+
| Result                                            |
+------------------------------------------------+
| Likes are less                                  |
| David                                            |
| Likes are less                                  |
| Sam                                              |
+------------------------------------------------+
4 rows in set (0.00 sec)

결과를 보면 PhotoLiked 값이 75를 초과하는 David(100)와 Sam(78)의 경우 이름이 그대로 출력되고, 그 외의 레코드에는 지정한 대체 문자열이 표시되는 것을 확인할 수 있습니다.

참고: CASE WHEN 표현식 활용하기

IF() 함수 외에도 표준 SQL 방식인 CASE WHEN 표현식을 사용할 수 있습니다. 단순한 이분법적 조건이라면 IF()로 충분하지만, 여러 조건을 순차적으로 처리해야 하는 경우에는 CASE WHEN이 더 유연하고 가독성이 뛰어납니다.

SELECT
  CASE
    WHEN PhotoLiked > 75 THEN UserName
    ELSE 'Likes are less'
  END AS Result
FROM DemoTable1966;

두 방식 모두 동일한 결과를 반환하므로, 상황에 맞게 선택하여 사용하면 됩니다.