Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách trừ giá trị giữa các bảng MySQL bằng LEFT JOIN

Chúng ta có thể hiểu cách trừ giá trị giữa hai bảng thông qua ví dụ dưới đây, sử dụng LEFT JOIN để tìm chênh lệch giá sản phẩm giữa thời điểm hiện tại và trước đó.

Dữ liệu mẫu

mysql> SELECT * FROM value_curdate;
+----+----------+-------+
| Id | Product  | Price |
+----+----------+-------+
| 1  | Notebook | 100   |
| 2  | Pen      | 40    |
| 3  | Pencil   | 65    |
+----+----------+-------+

mysql> SELECT * FROM value_prevdate;
+----+-----------+-------+
| Id | Product   | Price |
+----+-----------+-------+
| 1  | Notebook  | 85    |
| 2  | Pen       | 34    |
| 3  | Pencil    | 56    |
| 4  | Colors    | 65    |
| 5  | Fevistick | 25    |
+----+-----------+-------+

Truy vấn tính chênh lệch giá

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;

Kết quả

+----+----------+----------+-----------+------------+
| id | product  | Curprice | prevprice | Difference |
+----+----------+----------+-----------+------------+
| 1  | Notebook | 100      | 85        | 15         |
| 2  | Pen      | 40       | 34        | 6          |
| 3  | Pencil   | 65       | 56        | 9          |
+----+----------+----------+-----------+------------+

Giải thích: LEFT JOIN giữ lại tất cả bản ghi từ bảng bên trái (value_curdate). Với các sản phẩm không có trong bảng trước (Colors, Fevistick), cột prevprice sẽ là NULL và phép trừ sẽ trả về NULL.