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

MySQL 저장 프로시저에서 IN() 연산자로 특정 레코드만 조회하는 방법

MySQL에서 저장 프로시저(Stored Procedure)와 IN() 연산자를 함께 사용하면 원하는 특정 레코드만 손쉽게 조회할 수 있습니다. 이번 글에서는 테이블 생성부터 저장 프로시저 작성, 그리고 호출까지 전 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

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

mysql> create table DemoTable2004
(
    UserId varchar(20),
    UserName varchar(20)
);
Query OK, 0 rows affected (0.57 sec)

2. 샘플 데이터 삽입하기

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

mysql> insert into DemoTable2004 values('John_123','John');
Query OK, 1 row affected (0.93 sec)
mysql> insert into DemoTable2004 values('23456_Carol','Carol');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable2004 values('111_Bob','Bob');
Query OK, 1 row affected (0.14 sec)

3. 전체 레코드 확인하기

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

mysql> select * from DemoTable2004;

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

+-------------+----------+
| UserId      | UserName |
+-------------+----------+
| John_123    |     John |
| 23456_Carol |    Carol |
| 111_Bob     |      Bob |
+-------------+----------+
3 rows in set (0.00 sec)

4. 저장 프로시저 생성 및 IN()으로 특정 레코드 조회하기

다음은 저장 프로시저를 생성하고, 매개변수로 전달된 값과 일치하는 특정 레코드만 IN() 조건으로 조회하는 쿼리입니다.

mysql> delimiter //
mysql> create procedure test_of_in(IN uId varchar(20))
    BEGIN
       select * from DemoTable2004 where UserId IN(uId);
    END
    //
Query OK, 0 rows affected (0.15 sec)
mysql> delimiter ;

프로시저 생성이 완료되면 CALL 문으로 저장 프로시저를 호출합니다.

mysql> call test_of_in('23456_Carol');

호출 결과는 다음과 같습니다.

+-------------+----------+
| UserId      | UserName |
+-------------+----------+
| 23456_Carol | Carol    |
+-------------+----------+
1 row in set (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.02 sec)

핵심 정리

위 예제처럼 저장 프로시저의 입력 매개변수(uId)를 WHERE 절의 IN() 조건에 넣으면, 호출 시 전달한 값과 일치하는 레코드만 반환됩니다. 이 방식은 여러 값을 동시에 비교해야 하는 상황에서도 유연하게 확장할 수 있으며, 반복적인 조회 작업을 프로시저 하나로 재사용할 수 있다는 장점이 있습니다.