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

MySQL에서 특정 ID 레코드를 제외하고 나머지 데이터만 조회하는 방법

MySQL에서 목록에 포함된 일부 ID 레코드를 제외한 나머지 데이터만 조회하려면 NOT IN() 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 NOT IN()의 사용법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

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

mysql> create table DemoTable
(
    Id int
);
Query OK, 0 rows affected (0.64 sec)

2. 샘플 데이터 삽입하기

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

mysql> insert into DemoTable values(1);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(2);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(3);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values(4);
Query OK, 1 row affected (0.41 sec)
mysql> insert into DemoTable values(5);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(6);
Query OK, 1 row affected (0.12 sec)

3. 전체 레코드 확인하기

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

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+------+
| Id   |
+------+
| 1    |
| 2    |
| 3    |
| 4    |
| 5    |
| 6    |
+------+
6 rows in set (0.00 sec)

4. NOT IN()으로 특정 레코드 제외하기

이제 NOT IN() 연산자를 사용하여 ID가 1, 3, 4, 6인 레코드를 제외한 나머지 데이터만 조회해 보겠습니다.

mysql> select *from DemoTable where Id NOT IN(1,4,6,3);

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

+------+
| Id   |
+------+
| 2    |
| 5    |
+------+
2 rows in set (0.00 sec)

결과를 보면 지정한 ID(1, 3, 4, 6)에 해당하는 레코드는 제외되고, ID 2와 5인 레코드만 반환된 것을 확인할 수 있습니다.

참고 사항

NOT IN()은 제외할 값의 목록이 명확할 때 유용하지만, 목록에 NULL 값이 포함되면 의도치 않게 빈 결과를 반환할 수 있으므로 주의해야 합니다. 또한 대량의 데이터를 다룰 때는 NOT EXISTS나 LEFT JOIN 방식이 더 나은 성능을 제공할 수 있습니다.