MySQL에서 여러 열 중 하나가 특정 값과 일치하는 행 조회하기
MySQL에서 여러 열(컬럼) 중 하나라도 특정 값과 일치하는 행을 조회하려면 OR 연산자를 활용하면 됩니다. OR 조건을 여러 개 연결하면 지정한 열들 중 어느 하나라도 조건을 만족하는 모든 행이 결과로 반환됩니다.
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName varchar(10),
LastName varchar(10),
Age int,
CountryName varchar(10)
);
Query OK, 0 rows affected (0.58 sec)
다음으로 INSERT 명령을 사용하여 테이블에 샘플 데이터를 입력합니다.
mysql> insert into DemoTable(FirstName,LastName,Age,CountryName)
values('John','Smith',21,'US');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(FirstName,LastName,Age,CountryName)
values('Carol','Taylor',22,'AUS');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(FirstName,LastName,Age,CountryName)
values('David','Miller',19,'UK');
Query OK, 1 row affected (0.16 sec)
SELECT 문으로 테이블의 전체 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+----+-----------+----------+------+-------------+
| Id | FirstName | LastName | Age | CountryName |
+----+-----------+----------+------+-------------+
| 1 | John | Smith | 21 | US |
| 2 | Carol | Taylor | 22 | AUS |
| 3 | David | Miller | 19 | UK |
+----+-----------+----------+------+-------------+
3 rows in set (0.00 sec)
아래는 여러 열 중 하나가 특정 값과 일치하는 행을 선택하는 쿼리입니다. FirstName이 'Carol'이거나, Age가 22이거나, CountryName이 'AUS'인 세 가지 조건 중 하나라도 만족하는 행을 모두 조회합니다.
mysql> select *from DemoTable where FirstName="Carol" OR Age=22 OR CountryName="AUS";
출력 결과
+----+-----------+----------+------+-------------+
| Id | FirstName | LastName | Age | CountryName |
+----+-----------+----------+------+-------------+
| 2 | Carol | Taylor | 22 | AUS |
+----+-----------+----------+------+-------------+
1 row in set (0.00 sec)
참고 팁
같은 열에 대해 여러 값을 비교할 때는 IN 연산자를 사용하는 것이 더 간결하지만, 위 예제처럼 서로 다른 여러 열을 대상으로 조건을 걸 때는 OR 연산자를 사용하는 것이 표준적인 방법입니다. 또한 OR 조건이 많아지거나 AND 조건과 혼합해서 사용할 경우에는 괄호로 조건을 묶어주는 것이 좋습니다. 이렇게 하면 평가 순서가 명확해져 의도한 대로 정확하게 결과를 얻을 수 있습니다.