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

MySQL에서 여러 행이 존재하는지 확인하는 쿼리 작성법

MySQL에서 여러 행의 존재 여부 확인하기

데이터베이스 작업 중 특정 조건에 해당하는 여러 행(row)이 실제로 존재하는지 확인해야 하는 경우가 종종 있습니다. 이 글에서는 COUNT(DISTINCT ...) 함수를 활용하여 테이블 내에 원하는 행들이 모두 존재하는지 간단하게 검증하는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성

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

mysql> create table DemoTable1219
(
    Id int,
    Name varchar(40)
);
Query OK, 0 rows affected (0.43 sec)

2. 데이터 삽입

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

mysql> insert into DemoTable1219 values(100,'Adam');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1219 values(101,'John');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable1219 values(102,'Chris');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1219 values(103,'Bob');
Query OK, 1 row affected (0.18 sec)

3. 전체 데이터 조회

SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.

mysql> select *from DemoTable1219;

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

+------+-------+
| Id   | Name  |
+------+-------+
|  100 | Adam  |
|  101 | John  |
|  102 | Chris |
|  103 | Bob   |
+------+-------+
4 rows in set (0.00 sec)

4. 여러 행 존재 여부 확인 쿼리

다음은 특정 ID들(100, 102, 103)에 해당하는 행이 모두 존재하는지 확인하는 쿼리입니다.

mysql> select count(distinct Id)=3 from DemoTable1219 where Id IN(100,103,102);

실행 결과:

+----------------------+
| count(distinct Id)=3 |
+----------------------+
|                    1 |
+----------------------+
1 row in set (0.00 sec)

결과 해석 및 동작 원리

참고: 반환된 값이 1(TRUE)이면 요청한 여러 행이 모두 존재한다는 의미입니다. 값이 0(FALSE)이라면 하나 이상의 행이 존재하지 않는 것입니다.

이 쿼리의 동작 원리는 다음과 같습니다.
- WHERE Id IN(100,103,102): 지정한 세 개의 ID 중 하나라도 일치하는 행만 필터링합니다.
- COUNT(DISTINCT Id): 필터링된 행에서 중복을 제거한 고유한 ID의 개수를 계산합니다.
- =3: 고유 ID의 개수가 3개, 즉 요청한 모든 행의 수와 일치하면 1(True)을, 하나라도 누락되면 0(False)을 반환합니다.

이 방식은 서브쿼리나 복잡한 EXISTS 절 없이도 한 번의 쿼리로 여러 행의 존재 여부를 빠르게 판별할 수 있어 실무에서 유용하게 활용됩니다.