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

SET 문으로 MySQL 사용자 변수에 SELECT 결과값 할당하는 방법

SET 문으로 SELECT 결과를 사용자 변수에 할당하기

MySQL에서 SET 문을 사용하여 SELECT 쿼리의 결과를 사용자 변수에 할당하려면, SELECT 문을 괄호(())로 감싼 서브쿼리 형태로 작성해야 합니다.

이때 반드시 지켜야 할 조건이 있습니다. 바로 해당 SELECT 문이 단일 값(single value)만 반환해야 한다는 것입니다. 여러 행이나 여러 열을 반환하는 쿼리는 SET 문에 할당할 수 없습니다.

예제 테이블: Tender

설명을 돕기 위해 다음과 같은 'Tender' 테이블의 데이터를 사용하겠습니다.

mysql> select * from Tender;
+----+---------------+--------------+
| Sr | CompanyName   | Tender_value |
+----+---------------+--------------+
| 1  | Abc Corp.     | 250.369003   |
| 2  | Khaitan Corp. | 265.588989   |
| 3  | Singla group. | 220.255997   |
| 4  | Hero group.   | 221.253006   |
| 5  | Honda group   | 225.292266   |
+----+---------------+--------------+
5 rows in set (0.04 sec)

사용자 변수에 최댓값 할당하기

아래 쿼리는 tender_value 컬럼의 최댓값을 구한 뒤, ROUND() 함수로 소수점 둘째 자리까지 반올림하여 변수 @Val_Max에 할당합니다.

mysql> SET @Val_Max = (SELECT ROUND(MAX(tender_value),2) from tender);
Query OK, 0 rows affected (0.00 sec)

mysql> Select @Val_Max;
+----------+
| @Val_Max |
+----------+
| 265.59   |
+----------+
1 row in set (0.00 sec)

실행 결과를 보면, Tender 테이블에서 가장 큰 입찰 금액인 265.588989가 소수점 둘째 자리까지 반올림되어 265.59라는 값으로 @Val_Max 변수에 저장된 것을 확인할 수 있습니다.

이처럼 SET 문과 서브쿼리를 조합하면 집계 함수(MAX, MIN, COUNT, AVG 등)의 결과를 변수에 담아 이후 쿼리에서 재활용할 수 있어 매우 유용합니다.