MySQL '같지 않음' 연산자란?
MySQL에서 특정 값과 일치하지 않는 데이터를 조회하려면 <> 연산자를 사용하면 됩니다. 참고로 != 연산자도 동일한 기능을 수행하므로, 둘 중 편한 것을 선택해 사용할 수 있습니다.
기본 문법은 다음과 같습니다.
SELECT * FROM yourTableName WHERE yourColumnName <> anyValue;
예제 테이블 생성하기
문법을 실제로 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table NotEqualDemo -> ( -> ProductId int -> ); Query OK, 0 rows affected (0.53 sec)
이제 INSERT 명령어를 사용해 테이블에 몇 개의 레코드를 삽입합니다.
mysql> insert into NotEqualDemo values(101); Query OK, 1 row affected (0.13 sec) mysql> insert into NotEqualDemo values(102); Query OK, 1 row affected (0.23 sec) mysql> insert into NotEqualDemo values(103); Query OK, 1 row affected (0.11 sec) mysql> insert into NotEqualDemo values(104); Query OK, 1 row affected (0.13 sec) mysql> insert into NotEqualDemo values(105); Query OK, 1 row affected (0.12 sec)
SELECT 명령어로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from NotEqualDemo;
실행 결과는 다음과 같습니다.
+-----------+ | ProductId | +-----------+ | 101 | | 102 | | 103 | | 104 | | 105 | +-----------+ 5 rows in set (0.00 sec)
<> 연산자로 특정 값 제외하고 조회하기
이번에는 <> 연산자를 사용해 ProductId가 104가 아닌 데이터만 필터링해 보겠습니다. 이렇게 하면 104를 제외한 나머지 데이터가 모두 출력됩니다.
mysql> select *from NotEqualDemo where ProductId <> 104 or ProductId is null;
실행 결과는 다음과 같습니다.
+-----------+ | ProductId | +-----------+ | 101 | | 102 | | 103 | | 105 | +-----------+ 4 rows in set (0.00 sec)
NULL 처리 시 주의사항
위 예제에서 or ProductId is null 조건을 함께 사용한 이유는, SQL에서 NULL은 비교 연산자(<>, !=)와 비교했을 때 결과가 NULL로 반환되어 자동으로 제외되기 때문입니다. 따라서 컬럼에 NULL 값이 포함될 가능성이 있다면, NULL인 행도 함께 조회하려면 위처럼 IS NULL 조건을 명시적으로 추가하는 것이 좋습니다.