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

MySQL에서 여러 값을 선택하는 방법: OR 연산자와 IN 연산자 활용하기

MySQL에서 특정 컬럼의 여러 값을 한 번에 조회하고 싶을 때는 WHERE 절과 함께 OR 연산자 또는 IN 연산자를 사용하면 됩니다. 두 방법 모두 동일한 결과를 반환하지만, 상황에 따라 가독성과 성능 면에서 차이가 있을 수 있습니다.

기본 문법

방법 1 — OR 연산자 사용

SELECT * FROM yourTableName
WHERE yourColumnName = value1
OR yourColumnName = value2
OR yourColumnName = value3, ...N;

방법 2 — IN 연산자 사용

SELECT * FROM yourTableName
WHERE yourColumnName IN (value1, value2, ....N);

위 문법을 실제로 이해하기 위해 예제 테이블을 하나 만들어 보겠습니다.

예제 테이블 생성

다음 쿼리로 도서 정보를 저장할 테이블을 생성합니다.

mysql> CREATE TABLE selectMultipleValues
-> (
-> BookId int,
-> BookName varchar(200)
-> );
Query OK, 0 rows affected (1.68 sec)

데이터 삽입

INSERT 명령어를 사용해 테이블에 여러 레코드를 추가합니다.

mysql> INSERT INTO selectMultipleValues VALUES(100,'Introduction to C');
Query OK, 1 row affected (0.18 sec)

mysql> INSERT INTO selectMultipleValues VALUES(101,'Introduction to C++');
Query OK, 1 row affected (0.19 sec)

mysql> INSERT INTO selectMultipleValues VALUES(103,'Introduction to java');
Query OK, 1 row affected (0.14 sec)

mysql> INSERT INTO selectMultipleValues VALUES(104,'Introduction to Python');
Query OK, 1 row affected (0.14 sec)

mysql> INSERT INTO selectMultipleValues VALUES(105,'Introduction to C#');
Query OK, 1 row affected (0.13 sec)

mysql> INSERT INTO selectMultipleValues VALUES(106,'C in Depth');
Query OK, 1 row affected (0.15 sec)

전체 데이터 조회

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> SELECT * FROM selectMultipleValues;

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

+--------+------------------------+
| BookId | BookName |
+--------+------------------------+
| 100 | Introduction to C |
| 101 | Introduction to C++ |
| 103 | Introduction to java |
| 104 | Introduction to Python |
| 105 | Introduction to C# |
| 106 | C in Depth |
+--------+------------------------+
6 rows in set (0.00 sec)

Case 1 — OR 연산자로 여러 값 선택

OR 연산자를 사용하면 조건을 여러 개 나열하여 해당하는 레코드를 모두 조회할 수 있습니다.

mysql> SELECT * FROM selectMultipleValues WHERE BookId = 104 OR BookId = 106;

실행 결과:

+--------+------------------------+
| BookId | BookName |
+--------+------------------------+
| 104 | Introduction to Python |
| 106 | C in Depth |
+--------+------------------------+
2 rows in set (0.00 sec)

Case 2 — IN 연산자로 여러 값 선택

IN 연산자를 사용하면 괄호 안에 원하는 값들을 쉼표로 나열하기만 하면 되므로 훨씬 간결합니다.

mysql> SELECT * FROM selectMultipleValues WHERE BookId IN(104,106);

실행 결과:

+--------+------------------------+
| BookId | BookName |
+--------+------------------------+
| 104 | Introduction to Python |
| 106 | C in Depth |
+--------+------------------------+
2 rows in set (0.00 sec)

OR vs IN, 어떤 것을 사용해야 할까?

두 쿼리 모두 동일한 결과를 반환하지만, 일반적으로 다음과 같은 기준으로 선택하는 것이 좋습니다.

  • IN 연산자: 비교할 값이 많거나 같은 컬럼에 대해 여러 조건을 걸 때 코드가 간결하고 가독성이 뛰어나므로 권장됩니다.
  • OR 연산자: 서로 다른 컬럼에 대한 조건을 결합할 때 유용합니다. 예를 들어 BookId = 104 OR BookName = 'C in Depth'처럼 조건이 복합적일 경우 적합합니다.

또한 MySQL 옵티마이저는 대부분의 경우 IN 조건을 내부적으로 효율적으로 처리하므로, 단일 컬럼에 대한 다중 값 조회에는 IN 연산자를 사용하는 것이 좋은 습관입니다.