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

MySQL에서 쿼리 결과를 사용자 변수에 설정하는 방법

MySQL에서 쿼리의 결과값을 사용자 변수(user variable)에 저장하려면, 해당 변수를 할당문 안으로 옮겨주어야 합니다. 즉, SET 문과 함께 서브쿼리(subquery)를 활용하면 쿼리 결과를 변수에 직접 담을 수 있습니다.

개념을 이해하기 위해 먼저 예제 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table UserVariable
-> (
-> Id int,
-> Name varchar(100)
-> );
Query OK, 0 rows affected (0.53 sec)

1. 샘플 데이터 삽입

INSERT 명령어를 사용하여 테이블에 레코드를 몇 개 삽입합니다. 쿼리는 다음과 같습니다.

mysql> insert into UserVariable values(101,'John');
Query OK, 1 row affected (0.17 sec)

mysql> insert into UserVariable values(200,'Tom');
Query OK, 1 row affected (0.18 sec)

mysql> insert into UserVariable values(500,'Carol');
Query OK, 1 row affected (0.13 sec)

2. 전체 레코드 조회

SELECT 명령어를 사용하여 테이블의 모든 레코드를 확인합니다.

mysql> select *from UserVariable;

출력 결과

+------+-------+
| Id   | Name  |
+------+-------+
|  101 | John  |
|  200 | Tom   |
|  500 | Carol |
+------+-------+
3 rows in set (0.00 sec)

3. 쿼리 결과를 사용자 변수에 할당

이제 사용자 변수를 활용하여 최대 Id 값을 가진 레코드를 조회하는 쿼리를 작성해 보겠습니다. 먼저 변수를 선언하고, 위 테이블에서 최대 Id 값을 SELECT하여 초기화합니다.

mysql> set @Maxid=(select MAX(Id) from UserVariable);
Query OK, 0 rows affected (0.00 sec)

다음으로, 해당 최대 Id와 일치하는 이름(Name)만 담는 또 다른 변수를 생성합니다.

mysql> set @Name=(select Name from UserVariable where Id=@Maxid);
Query OK, 0 rows affected (0.00 sec)

4. 변수 값 확인

이제 @Name 변수에 어떤 값이 들어 있는지 확인할 수 있습니다.

mysql> select @Name;

아래 출력 결과에서 가장 큰 Id(500)에 해당하는 이름이 변수에 저장된 것을 확인할 수 있습니다.

+-------+
| @Name |
+-------+
| Carol |
+-------+
1 row in set (0.00 sec)

이처럼 MySQL에서는 SET @변수명 = (서브쿼리) 형태를 사용하여 쿼리의 실행 결과를 손쉽게 사용자 변수에 저장할 수 있습니다. 이후 이 변수는 다른 쿼리문에서 조건 비교나 값 참조 등 다양한 용도로 재활용할 수 있습니다.