데이터베이스 작업을 하다 보면 하나의 열(컬럼)에 여러 조건을 걸어 해당 조건과 일치하는 레코드만 조회해야 하는 경우가 자주 발생합니다. MySQL에서는 이런 상황을 처리하기 위해 여러 가지 방법을 사용할 수 있으며, 대표적인 방법으로 'OR' 논리 연산자와 WHERE IN(...) 절이 있습니다.
'OR' 논리 연산자 활용하기
MySQL의 'OR' 연산자는 두 개의 표현식을 비교하여 그중 하나라도 TRUE이면 TRUE를 반환합니다. 따라서 동일한 열에 대한 여러 조건을 연결하는 데 유용하게 사용됩니다.
다음 예제는 Student 테이블에서 Name 열의 값이 'Gaurav' 또는 'Aarav'인 레코드만 조회하는 쿼리입니다.
mysql> Select * from Student WHERE Name = 'Gaurav' OR Name = 'Aarav'; +------+--------+---------+-----------+ | Id | Name | Address | Subject | +------+--------+---------+-----------+ | 1 | Gaurav | Delhi | Computers | | 2 | Aarav | Mumbai | History | +------+--------+---------+-----------+ 2 rows in set (0.00 sec)
쿼리 결과를 보면 Name이 'Gaurav'와 'Aarav'인 두 개의 레코드만 반환된 것을 확인할 수 있습니다.
WHERE IN(...) 절 활용하기
WHERE IN(...) 절 역시 위와 동일한 목적으로 사용할 수 있습니다. 특히 비교 대상 값이 많아질수록 OR 연산자를 반복해서 쓰는 것보다 코드가 훨씬 간결하고 가독성이 좋아집니다.
사용 방법은 다음과 같습니다.
mysql> Select * from Student WHERE Name IN ('Gaurav','Aarav');
+------+--------+---------+-----------+
| Id | Name | Address | Subject |
+------+--------+---------+-----------+
| 1 | Gaurav | Delhi | Computers |
| 2 | Aarav | Mumbai | History |
+------+--------+---------+-----------+
2 rows in set (0.00 sec)두 방법 모두 동일한 결과를 반환하지만, 일반적으로 조건 값이 세 개 이상일 때는 WHERE IN(...) 절을 사용하는 것이 더 효율적이고 유지보수에도 유리합니다. 반면 두 개 정도의 간단한 조건이라면 OR 연산자도 충분히 직관적으로 사용할 수 있습니다.