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

MySQL에서 LEFT JOIN으로 두 테이블의 값 차이(뺄셈) 구하는 방법

LEFT JOIN으로 두 테이블 값 빼기

MySQL에서 두 테이블에 저장된 값을 서로 빼야 할 때 LEFT JOIN을 활용하면 간단하게 해결할 수 있습니다. 이 글에서는 실제 예제를 통해 두 테이블의 값을 뺀 차이를 구하는 방법을 단계별로 살펴보겠습니다.

예제 테이블 준비

먼저 상품의 현재 가격과 이전 가격을 각각 저장한 두 개의 테이블을 준비합니다.

mysql> Select * from value_curdate;
+----+----------+-------+
| Id | Product  | Price |
+----+----------+-------+
| 1  | Notebook | 100   |
| 2  | Pen      | 40    |
| 3  | Pencil   | 65    |
+----+----------+-------+
3 rows in set (0.00 sec)

mysql> Select * from value_prevdate;
+----+-----------+-------+
| Id | Product   | Price |
+----+-----------+-------+
| 1  | Notebook  | 85    |
| 2  | Pen       | 34    |
| 3  | Pencil    | 56    |
| 4  | Colors    | 65    |
| 5  | Fevistick | 25    |
+----+-----------+-------+
5 rows in set (0.00 sec)

위의 두 테이블은 각각 상품의 현재 가격(value_curdate)이전 가격(value_prevdate)을 담고 있습니다.

LEFT JOIN 쿼리로 가격 차이 계산하기

이제 LEFT JOIN을 사용하여 두 테이블에 공통으로 존재하는 같은 상품의 가격 차이를 계산하는 쿼리를 작성합니다.

mysql> Select value_curdate.id, value_curdate.product,
       value_curdate.price as Curprice,
       value_prevdate.price as 'prevprice',
       value_curdate.price - value_prevdate.price as 'Difference'
from value_curdate
LEFT JOIN value_prevdate ON value_curdate.id = value_prevdate.id;
+----+----------+----------+-----------+------------+
| id | product  | Curprice | prevprice | Difference |
+----+----------+----------+-----------+------------+
| 1  | Notebook | 100      | 85        | 15         |
| 2  | Pen      | 40       | 34        | 6          |
| 3  | Pencil   | 65       | 56        | 9          |
+----+----------+----------+-----------+------------+
3 rows in set (0.00 sec)

결과 해석

쿼리 결과를 보면 다음과 같은 차이를 확인할 수 있습니다.

  • Notebook: 100 − 85 = 15
  • Pen: 40 − 34 = 6
  • Pencil: 65 − 56 = 9

SELECT 절에서 별칭(alias)을 사용해 현재 가격은 Curprice, 이전 가격은 prevprice, 그리고 두 값의 뺄셈 결과는 Difference라는 이름으로 출력했습니다. 이렇게 하면 결과를 한눈에 파악하기 쉽습니다.

LEFT JOIN 사용 시 주의할 점

LEFT JOIN은 왼쪽 테이블(value_curdate)의 모든 행을 기준으로 결과를 반환합니다. 만약 오른쪽 테이블(value_prevdate)에 일치하는 행이 없다면 해당 열은 NULL로 표시되며, NULL과의 뺄셈 결과 역시 NULL이 됩니다. 따라서 이런 경우를 대비하려면 IFNULL() 함수를 함께 사용하는 것이 좋습니다.

Select value_curdate.id, value_curdate.product,
       value_curdate.price - IFNULL(value_prevdate.price, 0) as 'Difference'
from value_curdate
LEFT JOIN value_prevdate ON value_curdate.id = value_prevdate.id;

이처럼 LEFT JOIN과 산술 연산을 조합하면 두 테이블 간의 값 차이를 손쉽게 계산할 수 있으며, 가격 변동 분석이나 재고 비교 등 다양한 실무 상황에서 유용하게 활용됩니다.