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

MySQL에서 특정 레코드 하나만 제외하고 나머지 모든 레코드 조회하는 방법

MySQL에서 IN() 함수를 활용하면 특정 레코드 하나를 제외한 나머지 모든 레코드를 손쉽게 조회할 수 있습니다. 이번 글에서는 실제 예제를 통해 그 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

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

mysql> create table DemoTable
(
    Id int,
    FirstName varchar(20)
);
Query OK, 0 rows affected (0.57 sec)

2. 샘플 데이터 삽입하기

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

mysql> insert into DemoTable values(100,'Larry');
Query OK, 1 row affected (0.31 sec)
mysql> insert into DemoTable values(10,'Chris');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(110,'Robert');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(90,'David');
Query OK, 1 row affected (0.20 sec)

3. 전체 레코드 확인하기

SELECT 문을 사용해 테이블의 모든 레코드를 먼저 확인해 보겠습니다.

mysql> select *from DemoTable;

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

+------+-----------+
| Id   | FirstName |
+------+-----------+
| 100  | Larry     |
| 10   | Chris     |
| 110  | Robert    |
| 90   | David     |
+------+-----------+
4 rows in set (0.00 sec)

4. 특정 레코드 하나 제외하고 조회하기

이제 IN()을 사용하여 특정 레코드(여기서는 Id가 10인 'Chris')를 제외한 나머지 레코드만 조회해 보겠습니다. 제외하려는 값을 뺀 나머지 Id 값들을 IN() 안에 나열하면 됩니다.

mysql> select *from DemoTable where Id IN(110,90,100);

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

+------+-----------+
| Id   | FirstName |
+------+-----------+
| 100  | Larry     |
| 110  | Robert    |
| 90   | David     |
+------+-----------+
3 rows in set (0.00 sec)

참고: NOT IN()을 사용한 더 간단한 방법

레코드 수가 많은 경우에는 NOT IN() 연산자를 사용하는 것이 더 효율적입니다. 제외할 값만 지정하면 되기 때문입니다.

mysql> select *from DemoTable where Id NOT IN(10);

이 방법은 동일한 결과를 반환하지만, 대상 테이블의 레코드가 많아도 제외할 값만 명시하면 되므로 코드가 훨씬 간결해집니다.