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

MySQL에서 특정 레코드를 제외하는 방법 – NOT EQUAL 연산자 활용 가이드

MySQL에서 특정 레코드를 제외하는 방법

MySQL에서 조회 결과에서 특정 레코드를 제외하려면 같지 않음(NOT EQUAL) 연산자(!=)를 사용하면 됩니다. 이번 글에서는 예제 테이블을 직접 만들고, 원하는 레코드를 제외하는 쿼리를 작성하는 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

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

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientName varchar(20),
    ClientCountryName varchar(10)
    );
Query OK, 0 rows affected (0.64 sec)

위 쿼리는 자동 증가(AUTO_INCREMENT)되는 기본키 Id, 고객 이름(ClientName), 고객 국가(ClientCountryName) 컬럼으로 구성된 테이블을 만듭니다.

2. 레코드 삽입하기

INSERT 명령어를 사용해 테이블에 데이터를 추가합니다.

mysql> insert into DemoTable(ClientName,ClientCountryName) values('John','US');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(ClientName,ClientCountryName) values('David','AUS');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable(ClientName,ClientCountryName) values('Mike','UK');
Query OK, 1 row affected (0.14 sec)

3. 전체 레코드 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+----+------------+-------------------+
| Id | ClientName | ClientCountryName |
+----+------------+-------------------+
| 1  | John       | US                |
| 2  | David      | AUS               |
| 3  | Mike       | UK                |
+----+------------+-------------------+
3 rows in set (0.00 sec)

4. 특정 레코드 제외하기

이제 고객 이름이 'David'이거나 국가가 'AUS'에 해당하는 레코드를 제외하고 조회해 보겠습니다. 여러 조건에 해당하는 레코드를 모두 제외하려면 != 조건을 AND 연산자와 함께 사용하는 것이 정확합니다.

mysql> select *from DemoTable 
    where ClientName != 'David' AND ClientCountryName != 'AUS';

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

+----+------------+-------------------+
| Id | ClientName | ClientCountryName |
+----+------------+-------------------+
| 1  | John       | US                |
| 3  | Mike       | UK                |
+----+------------+-------------------+
2 rows in set (0.00 sec)

결과를 보면 'David' 레코드(Id 2)가 제외되고 나머지 2개의 레코드만 반환된 것을 확인할 수 있습니다.

참고: AND와 OR의 차이점

여러 조건으로 레코드를 제외할 때는 논리 연산자 선택이 매우 중요합니다.

  • AND 사용: 각 조건에 모두 해당하지 않는 레코드만 남기므로, 여러 조건에 걸친 레코드를 확실하게 제외할 때 적합합니다.
  • OR 사용: 조건 중 하나라도 참이면 레코드가 포함되므로, 의도한 제외가 제대로 이루어지지 않을 수 있습니다.

또한 NOT IN 절을 활용하면 여러 값을 더 간결하게 제외할 수 있습니다.

mysql> select *from DemoTable where ClientName NOT IN ('David');

이처럼 != 연산자와 NOT IN 절을 상황에 맞게 활용하면 원하는 레코드를 손쉽게 필터링할 수 있습니다.