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

MySQL에서 합계(SUM)를 계산해 테이블을 업데이트하고 결과를 마지막 열 값으로 표시하는 방법

개요

MySQL에서는 사용자 정의 변수에 SUM() 함수의 결과(합계)를 저장한 뒤, UPDATE 명령으로 테이블을 갱신하여 계산된 합계를 마지막 열 값으로 표시할 수 있습니다. 아래 예제를 통해 전체 과정을 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 CREATE TABLE 문으로 데모용 테이블을 생성합니다.

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Value int
);
Query OK, 0 rows affected (0.61 sec)

2단계: 데이터 삽입

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

mysql> insert into DemoTable(Value) values(70);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Value) values(100);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Value) values(150);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Value) values(250);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(Value) values(60);
Query OK, 1 row affected (0.22 sec)

3단계: 현재 데이터 확인

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

mysql> select *from DemoTable;

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

+----+-------+
| Id | Value |
+----+-------+
|  1 | 70    |
|  2 | 100   |
|  3 | 150   |
|  4 | 250   |
|  5 | 60    |
+----+-------+
5 rows in set (0.00 sec)

4단계: 합계를 변수에 저장하고 테이블 업데이트

다음은 SUM() 결과를 변수 @Total에 저장한 후, 그 값을 Id가 5인 행의 Value 열에 반영하는 쿼리입니다.

mysql> set @Total=(select sum(Value) from DemoTable);
Query OK, 0 rows affected (0.00 sec)
mysql> update DemoTable
    set Value= @Total
    where Id=5;
Query OK, 1 row affected (0.16 sec)
Rows matched: 1 Changed: 1 Warnings: 0

5단계: 업데이트 결과 확인

업데이트 후 테이블 레코드를 다시 한번 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+----+-------+
| Id | Value |
+----+-------+
|  1 |    70 |
|  2 |   100 |
|  3 |   150 |
|  4 |   250 |
|  5 |   630 |
+----+-------+
5 rows in set (0.00 sec)

정리

위 예제에서 Value 열의 전체 합계는 70 + 100 + 150 + 250 + 60 = 630입니다. SET 구문으로 변수 @Total에 합계를 저장한 뒤, UPDATE 문의 WHERE 조건(Id=5)을 통해 마지막 행에 해당 값을 대입하면 합계 결과가 테이블의 마지막 열 값으로 표시됩니다. 이 방식은 별도의 복잡한 서브쿼리 없이도 집계 결과를 기존 테이블에 손쉽게 반영할 수 있는 유용한 기법입니다.