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

MySQL에서 여러 열(컬럼) 조건으로 데이터 필터링하는 방법

MySQL에서 여러 열(column)을 동시에 기준으로 데이터를 필터링하려면 WHERE 절OR 연산자를 함께 사용하면 됩니다. 이번 글에서는 실제 예제를 통해 여러 열 조건으로 행을 조회하는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다. 아래 쿼리는 Id, Name, Score 세 개의 열을 가진 DemoTable을 만듭니다.

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name varchar(10),
    Score int
    );
Query OK, 0 rows affected (0.28 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable(Name,Score) values('John',80);
Query OK, 1 row affected (0.04 sec)

mysql> insert into DemoTable(Name,Score) values('John',90);
Query OK, 1 row affected (0.06 sec)

mysql> insert into DemoTable(Name,Score) values('Carol',89);
Query OK, 1 row affected (0.04 sec)

mysql> insert into DemoTable(Name,Score) values('John',86);
Query OK, 1 row affected (0.04 sec)

mysql> insert into DemoTable(Name,Score) values('Carol',98);
Query OK, 1 row affected (0.06 sec)

mysql> insert into DemoTable(Name,Score) values('David',99);
Query OK, 1 row affected (0.06 sec)

3. 전체 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+----+-------+-------+
| Id | Name  | Score |
+----+-------+-------+
| 1  | John  | 80    |
| 2  | John  | 90    |
| 3  | Carol | 89    |
| 4  | John  | 86    |
| 5  | Carol | 98    |
| 6  | David | 99    |
+----+-------+-------+
6 rows in set (0.00 sec)

4. 여러 열 조건으로 필터링하기

이제 핵심인 여러 열 조건 필터링 쿼리입니다. 괄호를 사용해 (Name, Score) 쌍을 묶고, OR 연산자로 여러 조건을 연결하면 원하는 조합의 행만 정확하게 조회할 수 있습니다.

mysql> select *from DemoTable where (Name,Score)=('John', 90) or (Name,Score)=('Carol', 98);

실행 결과는 다음과 같습니다.

+----+-------+-------+
| Id | Name  | Score |
+----+-------+-------+
| 2  | John  | 90    |
| 5  | Carol | 98    |
+----+-------+-------+
2 rows in set (0.00 sec)

결과 해석

위 쿼리는 '이름이 John이면서 점수가 90'인 행 또는 '이름이 Carol이면서 점수가 98'인 행만 반환했습니다. 이처럼 (열1, 열2) = (값1, 값2) 형태의 행 생성자(row constructor) 비교를 활용하면 두 개 이상의 열 조건을 깔끔하게 표현할 수 있으며, 복잡한 AND/OR 조합 없이도 가독성 높은 쿼리를 작성할 수 있습니다.