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 절을 상황에 맞게 활용하면 원하는 레코드를 손쉽게 필터링할 수 있습니다.