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

MySQL에서 CASE WHEN 문으로 레코드 존재 여부 확인하는 방법

MySQL에서 CASE WHEN 문으로 레코드 존재 여부 확인하기

MySQL에서는 CASE WHEN 문과 EXISTS 서브쿼리를 함께 사용하면 특정 레코드가 테이블에 존재하는지 손쉽게 확인할 수 있습니다. 이번 글에서는 예제 테이블을 만들고, UserId가 102인 레코드의 존재 여부를 확인하는 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
    UserId int,
    UserName varchar(100)
);
Query OK, 0 rows affected (0.57 sec)

2. 레코드 삽입

INSERT 명령을 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable values(100,'Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(101,'Robert');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(102,'David');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(103,'Mike');
Query OK, 1 row affected (0.11 sec)

3. 테이블 데이터 조회

SELECT 문으로 테이블의 전체 레코드를 확인합니다.

mysql> select *from DemoTable;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+--------+----------+
| UserId | UserName |
+--------+----------+
|    100 | Chris    |
|    101 | Robert   |
|    102 | David    |
|    103 | Mike     |
+--------+----------+
4 rows in set (0.00 sec)

4. CASE WHEN 쿼리로 존재 여부 확인

다음은 CASE WHEN 절과 EXISTS 서브쿼리를 활용해 UserId가 102인 레코드가 존재하는지 확인하는 쿼리입니다.

mysql> select case
   when exists(select * from DemoTable where UserId=102)
      then 'Present'
   else 'Not Present'
      end as Result;

UserId가 102인 레코드가 존재하므로 아래와 같이 'Present'가 반환됩니다.

+---------+
| Result  |
+---------+
| Present |
+---------+
1 row in set (0.02 sec)

정리

CASE WHEN 절 내부에서 EXISTS 서브쿼리를 사용하면, 조건에 맞는 레코드가 있으면 'Present', 없으면 'Not Present'를 반환합니다. WHERE 조건의 UserId 값만 변경하면 다른 레코드의 존재 여부도 동일한 방식으로 간편하게 확인할 수 있습니다.