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

MySQL에서 동일한 열에 여러 조건을 적용해 데이터를 조회하는 방법

데이터베이스 작업을 하다 보면 하나의 열(컬럼)에 여러 조건을 걸어 해당 조건과 일치하는 레코드만 조회해야 하는 경우가 자주 발생합니다. 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 연산자도 충분히 직관적으로 사용할 수 있습니다.