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

SQL에서 사용자 정의 변수로 최대 시험 날짜 조회하는 방법

개요

MySQL에서 SELECT ... INTO 구문을 활용하면 MAX() 함수의 결과값을 사용자 정의 변수에 저장할 수 있습니다. 이 방법을 사용하면 테이블에서 가장 늦은(최대) 시험 날짜를 손쉽게 변수에 담아 이후 쿼리에서 재활용할 수 있습니다.

기본 문법

사용자 정의 변수를 이용해 최대 시험 날짜를 가져오는 기본 문법은 다음과 같습니다.

select date(max(yourColumnName)) into @yourVariableName from yourTableName;

예제 테이블 생성

위 문법을 실제로 이해하기 위해 먼저 예제 테이블을 생성해 보겠습니다.

mysql> create table DemoTable2001
(
    ExamDate date
);
Query OK, 0 rows affected (0.60 sec)

데이터 삽입

INSERT 명령을 사용하여 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable2001 values('2019-01-10');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable2001 values('2018-12-31');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable2001 values('2018-11-18');
Query OK, 1 row affected (0.39 sec)
mysql> insert into DemoTable2001 values('2019-07-25');
Query OK, 1 row affected (0.13 sec)

전체 데이터 확인

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

mysql> select * from DemoTable2001;

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

+------------+
| ExamDate   |
+------------+
| 2019-01-10 |
| 2018-12-31 |
| 2018-11-18 |
| 2019-07-25 |
+------------+
4 rows in set (0.00 sec)

최대 날짜를 변수에 저장하기

이제 최대 날짜를 구하는 쿼리를 실행해 보겠습니다. 먼저 사용자 정의 변수를 초기화한 뒤, MAX() 함수 결과를 해당 변수에 저장합니다.

mysql> set @comingExamDate:=null;
Query OK, 0 rows affected (0.00 sec)
mysql> select date(max(ExamDate)) into @comingExamDate from DemoTable2001;
Query OK, 1 row affected (0.00 sec)
mysql> select @comingExamDate;

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

+------------------+
| @commingExamDate |
+------------------+
| 2019-07-25       |
+------------------+
1 row in set (0.00 sec)

정리

위 예제에서 볼 수 있듯이, 테이블에 저장된 네 개의 시험 날짜 중 가장 최근 날짜인 2019-07-25가 사용자 정의 변수 @comingExamDate에 성공적으로 저장되었습니다. 이처럼 SELECT ... INTO 구문은 집계 함수의 결과를 세션 변수에 보관하여 후속 작업에 활용할 때 매우 유용합니다.