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

MySQL에서 특정 값(=1, =2, =3 등)과 일치하는 행을 선택하는 쿼리 방법

MySQL에서 여러 특정 값과 일치하는 행 선택하기

데이터베이스 작업을 하다 보면 하나의 컬럼 값이 여러 후보 값 중 하나와 일치하는 행만 조회해야 하는 경우가 자주 발생합니다. 이번 글에서는 WHERE 절과 OR 연산자를 사용해 이러한 조건을 처리하는 방법을 예제와 함께 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
    UserId int,
    UserName varchar(10),
    UserAge int
);
Query OK, 0 rows affected (0.73 sec)

2. 레코드 삽입하기

INSERT 명령어를 사용해 테이블에 데이터를 추가합니다.

mysql> insert into DemoTable values(101,'Chris',23);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(102,'Robert',33);
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable values(103,'David',25);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values(104,'Carol',35);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values(105,'Bob',29);
Query OK, 1 row affected (0.17 sec)

3. 저장된 데이터 확인하기

SELECT 명령어로 테이블의 전체 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+--------+----------+---------+
| UserId | UserName | UserAge |
+--------+----------+---------+
| 101    | Chris    | 23      |
| 102    | Robert   | 33      |
| 103    | David    | 25      |
| 104    | Carol    | 35      |
| 105    | Bob      | 29      |
+--------+----------+---------+
5 rows in set (0.00 sec)

4. OR 조건으로 특정 값 조회하기

이제 UserAge 컬럼의 값이 25, 29, 33, 35 중 하나와 일치하는 행만 선택하는 쿼리입니다. 각 조건을 OR 연산자로 연결하면 됩니다.

mysql> select *from DemoTable where UserAge=25 or UserAge=35 or UserAge=33 or UserAge=29;

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

+--------+----------+---------+
| UserId | UserName | UserAge |
+--------+----------+---------+
| 102    | Robert   | 33      |
| 103    | David    | 25      |
| 104    | Carol    | 35      |
| 105    | Bob      | 29      |
+--------+----------+---------+
4 rows in set (0.00 sec)

UserAge가 23인 Chris(101)를 제외한 나머지 4개의 행이 정상적으로 조회된 것을 확인할 수 있습니다.

참고: IN 연산자로 더 간결하게 작성하기

조건이 많아질수록 OR 연산자를 반복해서 사용하면 쿼리가 길어지고 가독성이 떨어집니다. 이런 경우 IN 연산자를 사용하면 동일한 결과를 훨씬 간결하게 얻을 수 있습니다.

mysql> select *from DemoTable where UserAge IN (25, 29, 33, 35);

IN 연산자는 목록 안의 값 중 하나라도 일치하면 해당 행을 반환하므로, 여러 값을 비교할 때 성능과 유지보수 측면에서 권장되는 방식입니다.